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 7834e2692b SonarQube bug fixes
7834e2692b is described below
commit 7834e2692b416ada0da95bae5a7413ce682a8008
Author: James Bognar <[email protected]>
AuthorDate: Wed Feb 18 15:32:13 2026 -0500
SonarQube bug fixes
---
.cursor/S1452-wildcard-fix-plan.md | 138 +++++++++++++++++++++
.../commons/collections/SortedArrayList.java | 3 +
.../commons/collections/SortedLinkedList.java | 3 +
.../juneau/commons/reflect/AnnotationProvider.java | 7 +-
.../apache/juneau/commons/reflect/ClassInfo.java | 7 +-
.../juneau/commons/reflect/ExecutableInfo.java | 3 +
.../juneau/commons/utils/CollectionUtils.java | 3 +
.../main/java/org/apache/juneau/BeanBuilder.java | 3 +
.../main/java/org/apache/juneau/BeanContext.java | 8 +-
.../main/java/org/apache/juneau/BeanFilter.java | 3 +-
.../main/java/org/apache/juneau/BeanMapEntry.java | 3 +
.../java/org/apache/juneau/BeanPropertyMeta.java | 7 +-
.../java/org/apache/juneau/BeanPropertyValue.java | 5 +-
.../main/java/org/apache/juneau/BeanRegistry.java | 5 +-
.../main/java/org/apache/juneau/BeanSession.java | 7 +-
.../org/apache/juneau/BeanTraverseSession.java | 5 +-
.../src/main/java/org/apache/juneau/ClassMeta.java | 5 +-
.../java/org/apache/juneau/ExtendedBeanMeta.java | 3 +
.../java/org/apache/juneau/ExtendedClassMeta.java | 3 +
.../java/org/apache/juneau/annotation/Bean.java | 3 +
.../org/apache/juneau/collections/JsonList.java | 3 +
.../org/apache/juneau/collections/JsonMap.java | 3 +
.../java/org/apache/juneau/html/HtmlClassMeta.java | 3 +
.../org/apache/juneau/httppart/HttpPartSchema.java | 7 +-
.../juneau/httppart/bean/RequestBeanMeta.java | 3 +
.../juneau/httppart/bean/ResponseBeanMeta.java | 3 +
.../org/apache/juneau/objecttools/ObjectRest.java | 12 ++
.../org/apache/juneau/parser/ParserSession.java | 3 +
.../juneau/serializer/SerializerSession.java | 6 +
.../src/main/java/org/apache/juneau/svl/Var.java | 5 +-
.../java/org/apache/juneau/swap/AutoListSwap.java | 5 +-
.../java/org/apache/juneau/swap/AutoMapSwap.java | 5 +-
.../org/apache/juneau/swap/AutoNumberSwap.java | 5 +-
.../org/apache/juneau/swap/AutoObjectSwap.java | 5 +-
.../java/org/apache/juneau/swap/BuilderSwap.java | 15 ++-
.../java/org/apache/juneau/swap/DefaultSwaps.java | 3 +
.../java/org/apache/juneau/swap/ObjectSwap.java | 6 +-
.../java/org/apache/juneau/swap/SurrogateSwap.java | 6 +-
.../java/org/apache/juneau/rest/RestContext.java | 3 +
.../java/org/apache/juneau/rest/RestOpContext.java | 3 +
40 files changed, 308 insertions(+), 20 deletions(-)
diff --git a/.cursor/S1452-wildcard-fix-plan.md
b/.cursor/S1452-wildcard-fix-plan.md
new file mode 100644
index 0000000000..60d4e5a09d
--- /dev/null
+++ b/.cursor/S1452-wildcard-fix-plan.md
@@ -0,0 +1,138 @@
+# Plan: SonarLint S1452 – Remove Usage of Generic Wildcard Type
+
+## Rule Overview
+Sonar rule **S1452** flags generic wildcards (e.g., `?`, `? extends T`) in
return types and method signatures because they reduce type safety and clarity.
Fixes typically involve:
+1. Replacing with a type parameter
+2. Using a more specific type
+3. Using `@SuppressWarnings("java:S1452")` when the wildcard is intentional
and necessary
+
+---
+
+## Approach Strategy
+
+### Option A: `@SuppressWarnings("java:S1452")` (Preferred for most)
+Use when the wildcard is **semantically correct** and required for the API:
+- Heterogeneous collections (e.g., `List<AnnotationInfo<? extends
Annotation>>`)
+- Builder/fluent APIs where the second type parameter varies (e.g.,
`ObjectSwap<T,?>`)
+- Types representing "any" or "unknown" (e.g., `ClassMeta<?>`)
+
+### Option B: Type parameter substitution
+Use when a **generic method** can preserve type safety:
+- `List<AnnotationInfo<? extends Annotation>>` → `<A extends Annotation>
List<AnnotationInfo<A>> find(...)` (only when a single annotation type is
queried)
+- Not applicable when returning mixed annotation types
+
+### Option C: Replace with concrete type
+Use when a **more specific type** fits:
+- `?` → `Object` (when we only read/write Object)
+- Rarely applicable without losing type information
+
+---
+
+## File-by-File Plan
+
+### juneau-commons
+
+| File | Line | Current | Recommended Fix |
+|------|------|---------|-----------------|
+| **AnnotationProvider.java** | 676, 699, 722, 749, 788 |
`List<AnnotationInfo<? extends Annotation>>` | **Suppress** – heterogeneous
annotations; `? extends Annotation` is required |
+| **ClassInfo.java** | 721, 1770 | `List<AnnotationInfo<? extends
Annotation>>` | **Suppress** – same as AnnotationProvider |
+| **CollectionUtils.java** | 2259 | (verify exact usage) | **Suppress** or
refactor after inspection |
+| **ExecutableInfo.java** | 401 | (verify) | **Suppress** after inspection |
+| **SortedArrayList.java** | 291 | (verify) | **Suppress** after inspection |
+| **SortedLinkedList.java** | 271 | (verify) | **Suppress** after inspection |
+
+### juneau-marshall – Swap classes
+
+| File | Line | Current | Recommended Fix |
+|------|------|---------|-----------------|
+| **AutoListSwap.java** | 98 | `ObjectSwap<?,?>` | **Suppress** – `find()`
returns dynamically typed swap |
+| **AutoMapSwap.java** | 98 | `ObjectSwap<?,?>` | **Suppress** – same |
+| **AutoNumberSwap.java** | 121 | `ObjectSwap<?,?>` | **Suppress** – same |
+| **AutoObjectSwap.java** | 100 | `ObjectSwap<?,?>` | **Suppress** – same |
+| **BuilderSwap.java** | 53, 96, 264 | `BuilderSwap<?,?>` | **Suppress** –
builder pattern with varying types |
+| **DefaultSwaps.java** | 79 | (verify) | **Suppress** |
+| **ObjectSwap.java** | 179, 213, 408 | `ObjectSwap<T,?>`, `ClassMeta<?>` |
**Suppress** – `?` for output type in fluent API, `ClassMeta<?>` for unknown
class |
+| **SurrogateSwap.java** | 55 | (verify) | **Suppress** |
+
+### juneau-marshall – Bean / Class meta
+
+| File | Line | Current | Recommended Fix |
+|------|------|---------|-----------------|
+| **Bean.java** | 207 | (verify) | **Suppress** |
+| **BeanBuilder.java** | 129 | (verify) | **Suppress** |
+| **BeanContext.java** | 3991 | (verify) | **Suppress** |
+| **BeanFilter.java** | 893 | (verify) | **Suppress** |
+| **BeanMapEntry.java** | 72 | (verify) | **Suppress** |
+| **BeanPropertyMeta.java** | 799, 826 | `ClassMeta<?>`, etc. | **Suppress** –
element/component types vary |
+| **BeanPropertyValue.java** | 65 | (verify) | **Suppress** |
+| **BeanRegistry.java** | 89 | (verify) | **Suppress** |
+| **BeanSession.java** | 732, 1546 | (verify) | **Suppress** |
+| **BeanTraverseSession.java** | 252, 360 | (verify) | **Suppress** |
+| **ClassMeta.java** | 166–797, 1706, 1717 | `ClassMeta<?>`,
`ObjectSwap<T,?>`, `Mutater<T,?>`, etc. | **Suppress** – `?` needed for
element/component/key/value types |
+| **ExtendedBeanMeta.java** | 44 | (verify) | **Suppress** |
+| **ExtendedClassMeta.java** | 44 | (verify) | **Suppress** |
+
+### juneau-marshall – Other
+
+| File | Line | Current | Recommended Fix |
+|------|------|---------|-----------------|
+| **HtmlClassMeta.java** | 85 | (verify) | **Suppress** |
+| **HttpPartSchema.java** | 4077 | (verify) | **Suppress** |
+| **JsonList.java** | 789 | (verify) | **Suppress** |
+| **JsonMap.java** | 1111 | (verify) | **Suppress** |
+| **ObjectRest.java** | 513, 528, 571, 586 | (verify) | **Suppress** |
+| **ParserSession.java** | 928 | (verify) | **Suppress** |
+| **RequestBeanMeta.java** | 153 | (verify) | **Suppress** |
+| **ResponseBeanMeta.java** | 214 | (verify) | **Suppress** |
+| **SerializerSession.java** | 821, 1001 | (verify) | **Suppress** |
+
+### juneau-rest-server
+
+| File | Line | Current | Recommended Fix |
+|------|------|---------|-----------------|
+| **RestContext.java** | 2764 | (verify) | **Suppress** |
+| **RestOpContext.java** | 1239 | (verify) | **Suppress** |
+
+---
+
+## Implementation Phases
+
+### Phase 1: juneau-commons
+1. Add `@SuppressWarnings("java:S1452")` to AnnotationProvider methods (lines
676, 699, 722, 749, 788).
+2. Add suppression to ClassInfo (721, 1770).
+3. Inspect and fix CollectionUtils, ExecutableInfo, SortedArrayList,
SortedLinkedList.
+
+### Phase 2: juneau-marshall – Swap classes
+Add class- or method-level suppressions to Auto*Swap, BuilderSwap,
DefaultSwaps, ObjectSwap, SurrogateSwap.
+
+### Phase 3: juneau-marshall – Bean/Class meta
+Add suppressions to Bean*, ClassMeta, Extended*, HtmlClassMeta,
HttpPartSchema, Json*, ObjectRest, ParserSession, Request/ResponseBeanMeta,
SerializerSession.
+
+### Phase 4: juneau-rest-server
+Add suppressions to RestContext, RestOpContext.
+
+---
+
+## Suppression Format
+
+Use the project’s existing style:
+
+```java
+@SuppressWarnings("java:S1452") // Wildcard required - heterogeneous
annotations / dynamic types
+```
+
+Or add to existing `@SuppressWarnings`:
+
+```java
+@SuppressWarnings({ "rawtypes", "java:S1452" }) // S1452: wildcard required
for ...
+```
+
+---
+
+## Alternative Consideration
+
+A project-wide exclusion for S1452 in `sonar-project.properties` (or
equivalent) could be used if:
+- The codebase consistently relies on wildcards for reflection, beans, and
dynamic typing.
+- Fixing each occurrence would be high risk and low benefit.
+
+Given the volume of issues, `@SuppressWarnings` per file or method is
recommended over a global exclusion, so specific locations and reasons remain
documented.
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/SortedArrayList.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/SortedArrayList.java
index 2f17983035..416c50b8aa 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/SortedArrayList.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/SortedArrayList.java
@@ -288,6 +288,9 @@ public class SortedArrayList<E> extends AbstractList<E>
implements RandomAccess
*
* @return The comparator, or <jk>null</jk> if natural ordering is used.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - Comparator<? super E> for
PECS (Producer Extends Consumer Super)
+ })
public Comparator<? super E> comparator() {
return comparator == Comparator.naturalOrder() ? null :
comparator;
}
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/SortedLinkedList.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/SortedLinkedList.java
index b4c7436340..bf010d671b 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/SortedLinkedList.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/SortedLinkedList.java
@@ -268,6 +268,9 @@ public class SortedLinkedList<E> extends AbstractList<E> {
*
* @return The comparator, or <jk>null</jk> if natural ordering is used.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - Comparator<? super E> for
PECS (Producer Extends Consumer Super)
+ })
public Comparator<? super E> comparator() {
return comparator == Comparator.naturalOrder() ? null :
comparator;
}
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/AnnotationProvider.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/AnnotationProvider.java
index b75cb15839..d8c8fbefd6 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/AnnotationProvider.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/AnnotationProvider.java
@@ -177,7 +177,12 @@ import org.apache.juneau.commons.lang.*;
* <li class='jc'>{@link MethodInfo}
* </ul>
*/
-@SuppressWarnings({ "unchecked", "rawtypes", "java:S115" })
+@SuppressWarnings({
+ "unchecked",
+ "rawtypes",
+ "java:S115",
+ "java:S1452" // Wildcard required - List<AnnotationInfo<? extends
Annotation>> for heterogeneous annotations
+})
public class AnnotationProvider {
// Argument name constants for assertArgNotNull
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ClassInfo.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ClassInfo.java
index 714ce4e7dc..dd5bb57b04 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ClassInfo.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ClassInfo.java
@@ -66,7 +66,12 @@ import org.apache.juneau.commons.lang.*;
* </p>
*
*/
-@SuppressWarnings({ "unchecked", "rawtypes", "java:S115" })
+@SuppressWarnings({
+ "unchecked",
+ "rawtypes",
+ "java:S115",
+ "java:S1452" // Wildcard required - List<AnnotationInfo<? extends
Annotation>>, List<TypeVariable<?>>
+})
public class ClassInfo extends ElementInfo implements Annotatable, Type,
Comparable<ClassInfo> {
private static final String CLASSNAME_Autowired = "Autowired";
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
index 7b8c21a470..f54cd0e05f 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/reflect/ExecutableInfo.java
@@ -398,6 +398,9 @@ public abstract class ExecutableInfo extends AccessibleInfo
{
* @return An array of {@link TypeVariable} objects, or an empty array
if none.
* @see Executable#getTypeParameters()
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - TypeVariable<?> from
Executable.getTypeParameters()
+ })
public final TypeVariable<?>[] getTypeParameters() { return
inner.getTypeParameters(); }
/**
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 2d277c6405..ba5da8deb1 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
@@ -2336,6 +2336,9 @@ public class CollectionUtils {
* @throws IllegalArgumentException if the input object cannot be
converted to a List.
* @see arrayToList
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - List<?> for heterogeneous
collections from various sources
+ })
public static final List<?> toList(Object o) {
assertArgNotNull(ARG_o, o);
if (o instanceof List<?> o2)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanBuilder.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanBuilder.java
index a15c18cca2..de06d97843 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanBuilder.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanBuilder.java
@@ -126,6 +126,9 @@ public class BeanBuilder<T> {
*
* @return The creator for this bean.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - BeanCreator<? extends T>
for subclass flexibility
+ })
protected BeanCreator<? extends T> creator() {
return BeanCreator.of(type().orElseThrow(() -> new
IllegalStateException("Type not specified.")),
beanStore).builder(BeanBuilder.class, this);
}
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 e47032e55e..71e3eb84b0 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
@@ -160,7 +160,13 @@ import org.apache.juneau.swap.*;
* <li class='link'><a class="doclink"
href="https://juneau.apache.org/docs/topics/BeanContextBasics">Bean Context
Basics</a>
* </ul>
*/
-@SuppressWarnings({"unchecked","rawtypes","java:S6539","java:S115"})
+@SuppressWarnings({
+ "unchecked",
+ "rawtypes",
+ "java:S6539",
+ "java:S115",
+ "java:S1452" // Wildcard required - ClassMeta<?> for parameter
resolution and type variables
+})
public class BeanContext extends Context {
// Property name constants
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilter.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilter.java
index d9d8ecee5f..289276af4a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilter.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanFilter.java
@@ -76,7 +76,8 @@ import org.apache.juneau.swap.*;
* </ul>
*/
@SuppressWarnings({
- "rawtypes" // Raw types necessary for generic type handling
+ "rawtypes", // Raw types necessary for generic type handling
+ "java:S1452" // Wildcard required - ClassInfoTyped<?>, ClassMeta<?> for
filter metadata
})
public class BeanFilter {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMapEntry.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMapEntry.java
index 73d284191d..afbb52f414 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMapEntry.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanMapEntry.java
@@ -46,6 +46,9 @@ import org.apache.juneau.swap.*;
* </p>
*
*/
+@SuppressWarnings({
+ "java:S1452" // Wildcard required - BeanMap<?> for generic bean map
entries
+})
public class BeanMapEntry implements Map.Entry<String,Object> {
private final BeanMap<?> beanMap;
private final BeanPropertyMeta meta;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index 5dcf5af994..f5deea3e06 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@ -57,7 +57,12 @@ import org.apache.juneau.swaps.*;
* several methods on the {@link BeanMap} API.
*
*/
-@SuppressWarnings({ "rawtypes", "unchecked", "java:S115" }) // Constants use
UPPER_snakeCase convention (e.g., PROP_field, ARG_value)
+@SuppressWarnings({
+ "rawtypes",
+ "unchecked",
+ "java:S115", // Constants use UPPER_snakeCase convention (e.g.,
PROP_field, ARG_value)
+ "java:S1452" // Wildcard required - BeanMap<?>, ClassMeta<?> for
property metadata
+})
public class BeanPropertyMeta implements Comparable<BeanPropertyMeta> {
// Property name constants
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyValue.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyValue.java
index a87df0b433..73c775c864 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyValue.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanPropertyValue.java
@@ -24,7 +24,10 @@ import org.apache.juneau.commons.collections.*;
/**
* Represents a simple bean property value and the meta-data associated with
it.
*/
-@SuppressWarnings("java:S115") // Constants use UPPER_snakeCase convention
(e.g., PROP_name)
+@SuppressWarnings({
+ "java:S115", // Constants use UPPER_snakeCase convention (e.g.,
PROP_name)
+ "java:S1452" // Wildcard required - Class<?> for property type metadata
+})
public class BeanPropertyValue implements Comparable<BeanPropertyValue> {
// Property name constants
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java
index 7d33015e03..bd314ca2e3 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanRegistry.java
@@ -51,7 +51,10 @@ import org.apache.juneau.cp.*;
* </ul>
*
*/
-@SuppressWarnings("java:S115")
+@SuppressWarnings({
+ "java:S115",
+ "java:S1452" // Wildcard required - Class<?> for bean dictionary types
+})
public class BeanRegistry {
// Argument name constants for assertArgNotNull
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 848466a7e3..f584db5731 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
@@ -51,7 +51,12 @@ import org.apache.juneau.swap.*;
* </ul>
*
*/
-@SuppressWarnings({ "unchecked", "rawtypes", "java:S115" })
+@SuppressWarnings({
+ "unchecked",
+ "rawtypes",
+ "java:S115",
+ "java:S1452" // Wildcard required - ClassMeta<?>, ObjectSwap<?,?>,
etc. for bean metadata
+})
public class BeanSession extends ContextSession {
// Property name constants
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
index e65b268598..03dec15ca6 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseSession.java
@@ -47,7 +47,10 @@ import org.apache.juneau.commons.utils.*;
* </ul>
*
*/
-@SuppressWarnings("java:S115")
+@SuppressWarnings({
+ "java:S115",
+ "java:S1452" // Wildcard required - ClassMeta<?>, ObjectSwap<?,?> for
traversal metadata
+})
public class BeanTraverseSession extends BeanSession {
// Property name constants
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 5b926085b5..e7d7b3278f 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
@@ -65,7 +65,10 @@ import org.apache.juneau.swap.*;
* @param <T> The class type of the wrapped class.
*/
@Bean(properties =
"innerClass,elementType,keyType,valueType,notABeanReason,initException,beanMeta")
-@SuppressWarnings("java:S1200") // Class has 23 dependencies, acceptable for
this core reflection metadata class
+@SuppressWarnings({
+ "java:S1200", // Class has 23 dependencies, acceptable for this core
reflection metadata class
+ "java:S1452" // Wildcard required - ClassMeta<?>, ObjectSwap<T,?>,
Mutater<T,?>, etc. for element/component types
+})
public class ClassMeta<T> extends ClassInfoTyped<T> {
private static class Categories {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ExtendedBeanMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ExtendedBeanMeta.java
index b000d5a31f..6d4e05da41 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ExtendedBeanMeta.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ExtendedBeanMeta.java
@@ -22,6 +22,9 @@ import org.apache.juneau.commons.reflect.*;
* Defines extended language-specific metadata associated with a bean.
*
*/
+@SuppressWarnings({
+ "java:S1452" // Wildcard required - BeanMeta<?> for bean metadata
access
+})
public class ExtendedBeanMeta extends ExtendedMeta {
private final BeanMeta<?> bm;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ExtendedClassMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ExtendedClassMeta.java
index 314475d4d8..dda3d57128 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ExtendedClassMeta.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/ExtendedClassMeta.java
@@ -22,6 +22,9 @@ import org.apache.juneau.commons.reflect.*;
* Defines extended language-specific metadata associated with a class.
*
*/
+@SuppressWarnings({
+ "java:S1452" // Wildcard required - ClassMeta<?> for class metadata
access
+})
public class ExtendedClassMeta extends ExtendedMeta {
private final ClassMeta<?> cm;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
index cb84d9db16..a9385210a9 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/annotation/Bean.java
@@ -46,6 +46,9 @@ import org.apache.juneau.swap.*;
@Inherited
@Repeatable(BeanAnnotation.Array.class)
@ContextApply(BeanAnnotation.Applier.class)
+@SuppressWarnings({
+ "java:S1452" // Wildcard required - Class<? extends
BeanInterceptor<?>> for interceptor definition
+})
public @interface Bean {
/**
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 bd4e9b8898..ee81d193ae 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
@@ -804,6 +804,9 @@ public class JsonList extends LinkedList<Object> {
* @param index An index into this list, zero-based.
* @return The data type of the object at the specified index, or
<jk>null</jk> if the value is null.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - ClassMeta<?> for element
type metadata
+ })
public ClassMeta<?> getClassMeta(int index) {
return bs().getClassMetaForObject(get(index));
}
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 66672cc5da..247df5a3a5 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
@@ -1119,6 +1119,9 @@ public class JsonMap extends LinkedHashMap<String,Object>
{
* @return
* The data type of the object at the specified key, or
<jk>null</jk> if the value is null or does not exist.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - ClassMeta<?> for value
type metadata
+ })
public ClassMeta<?> getClassMeta(String key) {
return bs().getClassMetaForObject(get(key));
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlClassMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlClassMeta.java
index 6084950b8f..3b972510a6 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlClassMeta.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlClassMeta.java
@@ -33,6 +33,9 @@ import org.apache.juneau.html.annotation.*;
* </ul>
*/
+@SuppressWarnings({
+ "java:S1452" // Wildcard required - HtmlRender<?> for render callback
+})
public class HtmlClassMeta extends ExtendedClassMeta {
private final boolean noTables;
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 e25b5f244f..0e6ae6a8d1 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
@@ -83,7 +83,12 @@ import org.apache.juneau.parser.*;
* <li class='link'><a class="doclink"
href="https://juneau.apache.org/docs/topics/OpenApiBasics">OpenApi Basics</a>
* </ul>
*/
-@SuppressWarnings({ "java:S116", "java:S115", "java:S5843" }) // Constants use
UPPER_snakeCase convention (e.g., PROP_additionalProperties). S5843: Complex
regex patterns needed for RFC compliance (IPv6, ISO 8601 duration, date-time
formats)
+@SuppressWarnings({
+ "java:S116",
+ "java:S115",
+ "java:S5843", // Constants use UPPER_snakeCase convention (e.g.,
PROP_additionalProperties). S5843: Complex regex patterns needed for RFC
compliance (IPv6, ISO 8601 duration, date-time formats)
+ "java:S1452" // Wildcard required - ClassMeta<?> for parsed type
metadata
+})
public class HttpPartSchema {
private static final AnnotationProvider AP =
AnnotationProvider.INSTANCE;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
index c84b3d1a84..1488d712bf 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/RequestBeanMeta.java
@@ -150,6 +150,9 @@ public class RequestBeanMeta {
*
* @return Metadata about the class.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - ClassMeta<?> for request
metadata
+ })
public ClassMeta<?> getClassMeta() { return cm; }
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
index 4e40590a74..ea9db10e70 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/httppart/bean/ResponseBeanMeta.java
@@ -211,6 +211,9 @@ public class ResponseBeanMeta {
*
* @return Metadata about the class.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - ClassMeta<?> for response
metadata
+ })
public ClassMeta<?> getClassMeta() { return cm; }
/**
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 5e4c6e49b1..39cd5d8163 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
@@ -510,6 +510,9 @@ public class ObjectRest {
* @return The converted value, or <jk>null</jk> if the map contains no
mapping for this key.
* @throws InvalidDataConversionException If value cannot be converted.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - List<?> for heterogeneous
list elements
+ })
public List<?> getList(String url) {
return get(url, List.class);
}
@@ -525,6 +528,9 @@ public class ObjectRest {
* @return The converted value, or the default value if the map
contains no mapping for this key.
* @throws InvalidDataConversionException If value cannot be converted.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - List<?> for heterogeneous
list elements
+ })
public List<?> getList(String url, List<?> defVal) {
return getWithDefault(url, defVal, List.class);
}
@@ -568,6 +574,9 @@ public class ObjectRest {
* @return The converted value, or <jk>null</jk> if the map contains no
mapping for this key.
* @throws InvalidDataConversionException If value cannot be converted.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - Map<?,?> for heterogeneous
map entries
+ })
public Map<?,?> getMap(String url) {
return get(url, Map.class);
}
@@ -583,6 +592,9 @@ public class ObjectRest {
* @return The converted value, or the default value if the map
contains no mapping for this key.
* @throws InvalidDataConversionException If value cannot be converted.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - Map<?,?> for heterogeneous
map entries
+ })
public Map<?,?> getMap(String url, Map<?,?> defVal) {
return getWithDefault(url, defVal, Map.class);
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
index 52927a22ec..0a395e395a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ParserSession.java
@@ -927,6 +927,9 @@ public class ParserSession extends BeanSession {
* @param eType The expected type we're currently parsing.
* @return The resolved class, or <jk>null</jk> if the type name could
not be resolved.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - ClassMeta<?> for type
resolution
+ })
protected final ClassMeta<?> getClassMeta(String typeName,
BeanPropertyMeta pMeta, ClassMeta<?> eType) {
BeanRegistry br = null;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index a366a3c3cb..718c21b686 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -814,6 +814,9 @@ public class SerializerSession extends BeanTraverseSession {
* @param o The object to get the expected type on.
* @return The expected type.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - ClassMeta<?> for root type
metadata
+ })
protected final ClassMeta<?> getExpectedRootType(Object o) {
if (isAddRootType())
return object();
@@ -994,6 +997,9 @@ public class SerializerSession extends BeanTraverseSession {
* once (since they can be expensive).
* @throws SerializeException If recursion occurred.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - ClassMeta<?> for push
stack metadata
+ })
protected final ClassMeta<?> push2(String attrName, Object o,
ClassMeta<?> eType) throws SerializeException {
try {
return super.push(attrName, o, eType);
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/Var.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/Var.java
index 16ad1c2db2..f927cabc51 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/Var.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/Var.java
@@ -52,7 +52,10 @@ import java.io.*;
* </ul>
*/
-@SuppressWarnings("java:S115")
+@SuppressWarnings({
+ "java:S115",
+ "java:S1452" // Wildcard may appear in subclass method signatures
+})
public abstract class Var {
// Argument name constants for assertArgNotNull
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
index 13d9242a97..adf996f555 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoListSwap.java
@@ -94,7 +94,10 @@ public class AutoListSwap<T> extends ObjectSwap<T,List<?>> {
* @param ci The class to try to constructor a dynamic swap on.
* @return An object swap instance, or <jk>null</jk> if one could not
be created.
*/
- @SuppressWarnings({ "rawtypes" })
+ @SuppressWarnings({
+ "rawtypes",
+ "java:S1452" // Wildcard required - ObjectSwap<?,?> for
dynamically discovered swap types
+ })
public static ObjectSwap<?,?> find(BeanContext bc, ClassInfo ci) {
if (shouldIgnore(bc, ci))
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
index eb409d7183..387b4cb203 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoMapSwap.java
@@ -94,7 +94,10 @@ public class AutoMapSwap<T> extends ObjectSwap<T,Map<?,?>> {
* @param ci The class to try to constructor a dynamic swap on.
* @return An object swap instance, or <jk>null</jk> if one could not
be created.
*/
- @SuppressWarnings({ "rawtypes" })
+ @SuppressWarnings({
+ "rawtypes",
+ "java:S1452" // Wildcard required - ObjectSwap<?,?> for
dynamically discovered swap types
+ })
public static ObjectSwap<?,?> find(BeanContext bc, ClassInfo ci) {
if (shouldIgnore(bc, ci))
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
index f8bf22f981..7225ee9248 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoNumberSwap.java
@@ -117,7 +117,10 @@ public class AutoNumberSwap<T> extends
ObjectSwap<T,Number> {
* @param ci The class to try to constructor a dynamic swap on.
* @return An object swap instance, or <jk>null</jk> if one could not
be created.
*/
- @SuppressWarnings({ "rawtypes" })
+ @SuppressWarnings({
+ "rawtypes",
+ "java:S1452" // Wildcard required - ObjectSwap<?,?> for
dynamically discovered swap types
+ })
public static ObjectSwap<?,?> find(BeanContext bc, ClassInfo ci) {
if (shouldIgnore(bc, ci))
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
index 9d8ff753fe..a2a43bc969 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/AutoObjectSwap.java
@@ -96,7 +96,10 @@ public class AutoObjectSwap<T> extends ObjectSwap<T,Object> {
* @param ci The class to return a swap on.
* @return An object swap instance, or <jk>null</jk> if one could not
be created.
*/
- @SuppressWarnings({ "rawtypes" })
+ @SuppressWarnings({
+ "rawtypes",
+ "java:S1452" // Wildcard required - ObjectSwap<?,?> for
dynamically discovered swap types
+ })
public static ObjectSwap<?,?> find(BeanContext bc, ClassInfo ci) {
if (shouldIgnore(bc, ci))
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/BuilderSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/BuilderSwap.java
index 333851e5d9..574bc4ba41 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/BuilderSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/BuilderSwap.java
@@ -49,7 +49,11 @@ public class BuilderSwap<T,B> {
* @param mVis Minimum method visibility.
* @return A new swap instance, or <jk>null</jk> if class wasn't a
builder class.
*/
- @SuppressWarnings({ "rawtypes", "java:S1172" }) // Parameter mVis is
unused but kept for API consistency
+ @SuppressWarnings({
+ "rawtypes",
+ "java:S1172", // Parameter mVis is unused but kept for API
consistency
+ "java:S1452" // Wildcard required - BuilderSwap<?,?> for
dynamically discovered builder types
+ })
public static BuilderSwap<?,?> findSwapFromBuilderClass(Class<?>
builderClass, Visibility cVis, Visibility mVis) {
var bci = info(builderClass);
if (bci.isNotPublic())
@@ -92,7 +96,11 @@ public class BuilderSwap<T,B> {
* @param mVis Minimum method visibility.
* @return A new swap instance, or <jk>null</jk> if class didn't have a
builder class.
*/
- @SuppressWarnings({ "rawtypes", "java:S1172" }) // Parameter mVis is
unused but kept for API consistency
+ @SuppressWarnings({
+ "rawtypes",
+ "java:S1172", // Parameter mVis is unused but kept for API
consistency
+ "java:S1452" // Wildcard required - BuilderSwap<?,?> for
dynamically discovered builder types
+ })
public static BuilderSwap<?,?> findSwapFromObjectClass(BeanContext bc,
Class<?> objectClass, Visibility cVis, Visibility mVis) {
var builderClass = Value.<Class<?>>empty();
MethodInfo objectCreateMethod;
@@ -261,6 +269,9 @@ public class BuilderSwap<T,B> {
* This is always going to be the same bean context that created
this swap.
* @return The {@link ClassMeta} of the transformed class type.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - ClassMeta<?> for builder
class type
+ })
public ClassMeta<?> getBuilderClassMeta(BeanSession session) {
if (builderClassMeta == null)
builderClassMeta =
session.getClassMeta(getBuilderClass());
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/DefaultSwaps.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/DefaultSwaps.java
index df4510c3eb..bbcd132667 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/DefaultSwaps.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/DefaultSwaps.java
@@ -76,6 +76,9 @@ public class DefaultSwaps {
* @param ci The class to find the swap for.
* @return The matched swap, or <jk>null</jk> if it couldn't be found.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - ObjectSwap<?,?> for
heterogeneous default swap types
+ })
public static ObjectSwap<?,?> find(ClassInfo ci) {
var ci2 = ci.getAllParents().stream().filter(x ->
nn(SWAPS.get(x.inner()))).findFirst().orElse(null);
return ci2 == null ? null : SWAPS.get(ci2.inner());
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 3f38a3b2e4..7e4f183c18 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
@@ -101,7 +101,11 @@ import org.apache.juneau.serializer.*;
* @param <T> The normal form of the class.
* @param <S> The swapped form of the class.
*/
-@SuppressWarnings({ "unchecked", "rawtypes" })
+@SuppressWarnings({
+ "unchecked",
+ "rawtypes",
+ "java:S1452" // Wildcard required - ObjectSwap<T,?>, ClassMeta<?> for
fluent API and swap metadata
+})
public abstract class ObjectSwap<T,S> {
/**
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
index c74436a27b..a5fdadf435 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/swap/SurrogateSwap.java
@@ -51,7 +51,11 @@ public class SurrogateSwap<T,F> extends ObjectSwap<T,F> {
* @param bc The bean context to use for looking up annotations.
* @return The list of object swaps that apply to this class.
*/
- @SuppressWarnings({ "unchecked", "rawtypes" })
+ @SuppressWarnings({
+ "unchecked",
+ "rawtypes",
+ "java:S1452" // Wildcard required - List<SurrogateSwap<?,?>>
for multiple constructor-based swaps
+ })
public static List<SurrogateSwap<?,?>> findObjectSwaps(Class<?> c,
BeanContext bc) {
List<SurrogateSwap<?,?>> l = new LinkedList<>();
var ci = info(c);
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 2fcf27bede..8f8be9c277 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -2761,6 +2761,9 @@ public class RestContext extends Context {
*
* @return The REST servlet/bean instance that this context is
defined against.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - Supplier<?> for
generic REST resource instance
+ })
public Supplier<?> resource() {
return Objects.requireNonNull(resource, "Resource not
available. init(Object) has not been called.");
}
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
index 5605d1406c..1bcf1d8bb0 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
@@ -1238,6 +1238,9 @@ public class RestOpContext extends Context implements
Comparable<RestOpContext>
*
* @return The REST servlet/bean instance that this context is
defined against.
*/
+ @SuppressWarnings({
+ "java:S1452" // Wildcard required - Supplier<?> for
generic REST resource instance
+ })
public Supplier<?> resource() {
return restContext.builder.resource();
}