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 b59e581a06 SonarQube bug fixes
b59e581a06 is described below
commit b59e581a06cad0972b599858f263f8cc098d9b94
Author: James Bognar <[email protected]>
AuthorDate: Fri Feb 6 08:27:27 2026 -0500
SonarQube bug fixes
---
.../juneau/assertions/AssertionPredicate.java | 10 +++---
.../apache/juneau/commons/inject/BeanCreator2.java | 19 ++++++-----
.../apache/juneau/commons/reflect/ClassInfo.java | 7 ++--
.../org/apache/juneau/httppart/HttpPartSchema.java | 37 +++++++++++++---------
4 files changed, 43 insertions(+), 30 deletions(-)
diff --git
a/juneau-core/juneau-assertions/src/main/java/org/apache/juneau/assertions/AssertionPredicate.java
b/juneau-core/juneau-assertions/src/main/java/org/apache/juneau/assertions/AssertionPredicate.java
index c738994ed4..592640f326 100644
---
a/juneau-core/juneau-assertions/src/main/java/org/apache/juneau/assertions/AssertionPredicate.java
+++
b/juneau-core/juneau-assertions/src/main/java/org/apache/juneau/assertions/AssertionPredicate.java
@@ -62,6 +62,8 @@ import org.apache.juneau.cp.*;
@SuppressWarnings("java:S115") // Constants use UPPER_snakeCase convention
(e.g., MSG_predicateTestFailed, MSG_valueDidNotPassTest)
public class AssertionPredicate<T> implements Predicate<T> {
+ private static final String CONST_Messages = "Messages";
+
/**
* Encapsulates multiple predicates into a single AND operation.
*
@@ -73,7 +75,7 @@ public class AssertionPredicate<T> implements Predicate<T> {
*/
public static class And<T> extends AssertionPredicate<T> {
- private static final Messages MESSAGES =
Messages.of(AssertionPredicate.class, "Messages");
+ private static final Messages MESSAGES =
Messages.of(AssertionPredicate.class, CONST_Messages);
private static final String MSG_predicateTestFailed =
MESSAGES.getString("predicateTestFailed");
private final Predicate<T>[] inner;
@@ -118,7 +120,7 @@ public class AssertionPredicate<T> implements Predicate<T> {
*/
public static class Not<T> extends AssertionPredicate<T> {
- private static final Messages MESSAGES =
Messages.of(AssertionPredicate.class, "Messages");
+ private static final Messages MESSAGES =
Messages.of(AssertionPredicate.class, CONST_Messages);
private static final String
MSG_predicateTestsUnexpectedlyPassed =
MESSAGES.getString("predicateTestsUnexpectedlyPassed");
private final Predicate<T> inner;
@@ -158,7 +160,7 @@ public class AssertionPredicate<T> implements Predicate<T> {
*/
public static class Or<T> extends AssertionPredicate<T> {
- private static final Messages MESSAGES =
Messages.of(AssertionPredicate.class, "Messages");
+ private static final Messages MESSAGES =
Messages.of(AssertionPredicate.class, CONST_Messages);
private static final String MSG_noPredicateTestsPassed =
MESSAGES.getString("noPredicateTestsPassed");
private final Predicate<T>[] inner;
@@ -189,7 +191,7 @@ public class AssertionPredicate<T> implements Predicate<T> {
* Argument placeholder for tested value.
*/
public static final Function<Object,String> VALUE =
StringUtils::readable;
- private static final Messages MESSAGES =
Messages.of(AssertionPredicate.class, "Messages");
+ private static final Messages MESSAGES =
Messages.of(AssertionPredicate.class, CONST_Messages);
private static final String MSG_valueDidNotPassTest =
MESSAGES.getString("valueDidNotPassTest");
private static final String MSG_valueDidNotPassTestWithValue =
MESSAGES.getString("valueDidNotPassTestWithValue");
private final Predicate<T> inner;
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/inject/BeanCreator2.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/inject/BeanCreator2.java
index 7711920243..9094491c57 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/inject/BeanCreator2.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/inject/BeanCreator2.java
@@ -187,6 +187,7 @@ import org.apache.juneau.commons.reflect.*;
public class BeanCreator2<T> {
private static final String CLASSNAME_Autowired = "Autowired";
+ private static final String CLASSNAME_Inject = "Inject";
// Argument name constants for assertArgNotNull
private static final String ARG_beanType = "beanType";
@@ -195,6 +196,8 @@ public class BeanCreator2<T> {
private static final String ARG_names = "names";
private static final String ARG_value = "value";
+ private static final String CONST_usingFallbackSupplier = "Using
fallback supplier";
+
/** Default factory method names used for bean instantiation. */
protected static final Set<String> DEFAULT_FACTORY_METHOD_NAMES =
u(set("getInstance"));
@@ -1124,7 +1127,7 @@ public class BeanCreator2<T> {
.filter(x -> x.isAll(NOT_STATIC,
NOT_DEPRECATED, NOT_SYNTHETIC, NOT_BRIDGE))
.filter(x ->
buildMethodNames.contains(x.getNameSimple()))
.filter(x -> opt(x).map(x2 ->
x2.getReturnType()).filter(x2 -> x2.is(beanSubType.inner()) ||
x2.isParentOf(beanSubType)).isPresent()) // Accept methods that return
beanSubType or a parent type of beanSubType
- .filter(x ->
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eqAny(n, "Inject", CLASSNAME_Autowired)) ? x.canResolveAllParameters(store2) :
x.getParameterCount() == 0)
+ .filter(x ->
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eqAny(n, CLASSNAME_Inject, CLASSNAME_Autowired)) ?
x.canResolveAllParameters(store2) : x.getParameterCount() == 0)
.sorted(methodComparator)
.findFirst();
@@ -1138,7 +1141,7 @@ public class BeanCreator2<T> {
log("Expected beanSubType: %s",
beanSubType.getName());
// Check if method has @Inject annotation
- boolean hasInject =
method.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n
-> eqAny(n, "Inject", CLASSNAME_Autowired));
+ boolean hasInject =
method.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n
-> eqAny(n, CLASSNAME_Inject, CLASSNAME_Autowired));
if (hasInject) {
log("Method has @Inject annotation,
resolving parameters from bean store");
} else {
@@ -1170,7 +1173,7 @@ public class BeanCreator2<T> {
.filter(x -> x.isAll(NOT_STATIC,
NOT_DEPRECATED, NOT_SYNTHETIC, NOT_BRIDGE))
.filter(x ->
!buildMethodNames.contains(x.getNameSimple())) // Skip standard build methods
we already checked
.filter(x ->
x.getReturnType().is(beanSubType.inner())) // Must return exact beanSubType,
not parent
- .filter(x ->
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eqAny(n, "Inject", CLASSNAME_Autowired)) ? x.canResolveAllParameters(store2) :
x.getParameterCount() == 0)
+ .filter(x ->
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eqAny(n, CLASSNAME_Inject, CLASSNAME_Autowired)) ?
x.canResolveAllParameters(store2) : x.getParameterCount() == 0)
.sorted(methodComparator)
.findFirst();
@@ -1223,7 +1226,7 @@ public class BeanCreator2<T> {
log("Builder detected but no appropriate build
method found. Builder type: %s. Expected method names: %s",
builder2.getClass().getName(), buildMethodNames);
if (fallbackSupplier != null) {
- log("Using fallback supplier");
+ log(CONST_usingFallbackSupplier);
T fallbackBean = fallbackSupplier.get();
runPostCreateHooks(fallbackBean);
return fallbackBean;
@@ -1282,7 +1285,7 @@ public class BeanCreator2<T> {
if (beanSubType.isInterface()) {
log("Bean type is an interface");
if (fallbackSupplier != null) {
- log("Using fallback supplier");
+ log(CONST_usingFallbackSupplier);
T fallbackBean = fallbackSupplier.get();
runPostCreateHooks(fallbackBean);
return fallbackBean;
@@ -1293,7 +1296,7 @@ public class BeanCreator2<T> {
if (beanSubType.isAbstract()) {
log("Bean type is abstract");
if (fallbackSupplier != null) {
- log("Using fallback supplier");
+ log(CONST_usingFallbackSupplier);
T fallbackBean = fallbackSupplier.get();
runPostCreateHooks(fallbackBean);
return fallbackBean;
@@ -1302,7 +1305,7 @@ public class BeanCreator2<T> {
}
if (fallbackSupplier != null) {
- log("Using fallback supplier");
+ log(CONST_usingFallbackSupplier);
T fallbackBean = fallbackSupplier.get();
runPostCreateHooks(fallbackBean);
return fallbackBean;
@@ -1581,7 +1584,7 @@ public class BeanCreator2<T> {
var returnType = x.getReturnType();
return returnType.is(beanSubType.inner()) ||
returnType.is(beanType.inner()) || returnType.isParentOf(beanSubType);
})
- .anyMatch(x ->
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eqAny(n, "Inject", CLASSNAME_Autowired)) || x.getParameterCount() == 0);
+ .anyMatch(x ->
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eqAny(n, CLASSNAME_Inject, CLASSNAME_Autowired)) || x.getParameterCount() == 0);
if (hasBuildMethod) {
log("Builder is valid: has build/create/get method
returning bean type");
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 0b22e83d12..43820c0ec3 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
@@ -70,6 +70,7 @@ import org.apache.juneau.commons.lang.*;
public class ClassInfo extends ElementInfo implements Annotatable, Type,
Comparable<ClassInfo> {
private static final String CLASSNAME_Autowired = "Autowired";
+ private static final String CLASSNAME_Inject = "Inject";
// Argument name constants for assertArgNotNull
private static final String ARG_type = "type";
@@ -2962,13 +2963,13 @@ public class ClassInfo extends ElementInfo implements
Annotatable, Type, Compara
public <T> T inject(T bean, BeanStore beanStore) {
// Inject into fields
getAllFields().stream()
- .filter(x -> x.isNotFinal() &&
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eq(n, "Inject") || eq(n, CLASSNAME_Autowired)))
+ .filter(x -> x.isNotFinal() &&
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eq(n, CLASSNAME_Inject) || eq(n, CLASSNAME_Autowired)))
.forEach(x -> x.inject(beanStore, bean));
// Inject into methods
getAllMethods().stream()
- .filter(x -> x.isNotAbstract() &&
eq(x.getTypeParameters().length, 0) &&
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eq(n, "Inject") || eq(n, CLASSNAME_Autowired)))
- .filter(x -> x.isNotAbstract() &&
eq(x.getTypeParameters().length, 0) &&
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eq(n, "Inject") || eq(n, CLASSNAME_Autowired)))
+ .filter(x -> x.isNotAbstract() &&
eq(x.getTypeParameters().length, 0) &&
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eq(n, CLASSNAME_Inject) || eq(n, CLASSNAME_Autowired)))
+ .filter(x -> x.isNotAbstract() &&
eq(x.getTypeParameters().length, 0) &&
x.getAnnotations().stream().map(AnnotationInfo::getNameSimple).anyMatch(n ->
eq(n, CLASSNAME_Inject) || eq(n, CLASSNAME_Autowired)))
.forEach(x -> x.inject(beanStore, bean));
// Call @PostConstruct methods after all injection is complete
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 9cbad01855..812a50fcfc 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
@@ -132,6 +132,13 @@ public class HttpPartSchema {
private static final String CLASSNAME_DecimalMin = "DecimalMin";
private static final String CLASSNAME_DecimalMax = "DecimalMax";
+ // Annotation attribute name constants
+ private static final String ANN_value = "value";
+ private static final String ANN_min = "min";
+ private static final String ANN_max = "max";
+ private static final String ANN_regexp = "regexp";
+ private static final String ANN_inclusive = "inclusive";
+
/**
* Builder class.
*/
@@ -2918,9 +2925,9 @@ public class HttpPartSchema {
case CLASSNAME_NotNull:
required(true);
break;
- case CLASSNAME_Size:
- Integer min =
getAnnotationValue(a, "min", Integer.class);
- Integer max =
getAnnotationValue(a, "max", Integer.class);
+ case CLASSNAME_Size:
+ Integer min = getAnnotationValue(a,
ANN_min, Integer.class);
+ Integer max = getAnnotationValue(a,
ANN_max, Integer.class);
if (nn(min) && min > 0) {
minLength(min.longValue());
minItems(min.longValue());
@@ -2930,18 +2937,18 @@ public class HttpPartSchema {
maxItems(max.longValue());
}
break;
- case CLASSNAME_Min:
- Long minValue =
getAnnotationValue(a, "value", Long.class);
+ case CLASSNAME_Min:
+ Long minValue = getAnnotationValue(a,
ANN_value, Long.class);
if (nn(minValue))
minimum(minValue);
break;
- case CLASSNAME_Max:
- Long maxValue =
getAnnotationValue(a, "value", Long.class);
+ case CLASSNAME_Max:
+ Long maxValue = getAnnotationValue(a,
ANN_value, Long.class);
if (nn(maxValue))
maximum(maxValue);
break;
- case CLASSNAME_Pattern:
- String regexp =
getAnnotationValue(a, "regexp", String.class);
+ case CLASSNAME_Pattern:
+ String regexp = getAnnotationValue(a,
ANN_regexp, String.class);
if (nn(regexp))
pattern(regexp);
break;
@@ -2972,18 +2979,18 @@ public class HttpPartSchema {
minLength(1L);
pattern(".*\\S.*"); // Contains
at least one non-whitespace character
break;
- case CLASSNAME_DecimalMin:
- String minVal =
getAnnotationValue(a, "value", String.class);
- Boolean minInclusive =
getAnnotationValue(a, "inclusive", Boolean.class);
+ case CLASSNAME_DecimalMin:
+ String minVal = getAnnotationValue(a,
ANN_value, String.class);
+ Boolean minInclusive =
getAnnotationValue(a, ANN_inclusive, Boolean.class);
if (nn(minVal)) {
minimum(toNumber(minVal));
if
(isFalse(minInclusive))
exclusiveMinimum(true);
}
break;
- case CLASSNAME_DecimalMax:
- String maxVal =
getAnnotationValue(a, "value", String.class);
- Boolean maxInclusive =
getAnnotationValue(a, "inclusive", Boolean.class);
+ case CLASSNAME_DecimalMax:
+ String maxVal = getAnnotationValue(a,
ANN_value, String.class);
+ Boolean maxInclusive =
getAnnotationValue(a, ANN_inclusive, Boolean.class);
if (nn(maxVal)) {
maximum(toNumber(maxVal));
if
(isFalse(maxInclusive))