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 8e2d054621 SonarQube bug fixes
8e2d054621 is described below
commit 8e2d054621041aa9d3eac740e2acc6ca4c3c988f
Author: James Bognar <[email protected]>
AuthorDate: Wed Feb 18 09:11:57 2026 -0500
SonarQube bug fixes
---
.../juneau/commons/io/CharSequenceReader.java | 2 -
.../org/apache/juneau/commons/io/LocalDir.java | 4 +-
.../apache/juneau/commons/utils/StringUtils.java | 11 ++-
.../main/java/org/apache/juneau/BeanContext.java | 4 +-
.../urlencoding/UrlEncodingParserSession.java | 4 +-
.../urlencoding/UrlEncodingSerializerSession.java | 8 +--
.../juneau/bean/swagger/ui/SwaggerUI_Test.java | 84 +++-------------------
.../juneau/commons/inject/BasicBeanStore_Test.java | 35 +++------
.../apache/juneau/commons/lang/HashCode_Test.java | 36 ++++++----
.../apache/juneau/commons/lang/Version_Test.java | 28 +++-----
.../juneau/commons/reflect/PackageInfo_Test.java | 2 +-
scripts/check-fluent-setter-overrides.py | 1 +
12 files changed, 66 insertions(+), 153 deletions(-)
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/io/CharSequenceReader.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/io/CharSequenceReader.java
index 218b5662e0..3e541ef2a7 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/io/CharSequenceReader.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/io/CharSequenceReader.java
@@ -126,8 +126,6 @@ public class CharSequenceReader extends BufferedReader {
this.cs = cs;
if (cs instanceof String s2)
s = s2;
- else if (cs instanceof StringBuffer sb3)
- sb = new StringBuilder(sb3);
else if (cs instanceof StringBuilder sb4)
sb = sb4;
this.length = cs.length();
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/io/LocalDir.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/io/LocalDir.java
index 9f582951e0..79af796bda 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/io/LocalDir.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/io/LocalDir.java
@@ -102,9 +102,7 @@ public class LocalDir {
if (url == null)
return false;
var uri = url.toURI();
- if (uri.toString().startsWith("file:") &&
Files.isDirectory(Paths.get(uri)))
- return false;
- return true;
+ return !(uri.toString().startsWith("file:") &&
Files.isDirectory(Paths.get(uri)));
});
}
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/StringUtils.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/StringUtils.java
index b81c41e1ab..a19ff475e4 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/StringUtils.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/utils/StringUtils.java
@@ -664,7 +664,7 @@ public class StringUtils {
* @return A negative integer, zero, or a positive integer as the first
string is less than, equal to, or greater than the second.
*/
public static int compareIgnoreCase(String str1, String str2) {
- if (str1 == str2)
+ if (Objects.equals(str1, str2))
return 0;
if (str1 == null)
return -1;
@@ -1519,7 +1519,7 @@ public class StringUtils {
* @see Utils#eqic(String, String)
*/
public static boolean equalsIgnoreCase(String str1, String str2) {
- if (str1 == str2)
+ if (Objects.equals(str1, str2))
return true;
if (str1 == null || str2 == null)
return false;
@@ -3589,10 +3589,9 @@ public class StringUtils {
else
return false;
} else if (state == S2) {
- if (isLowerCaseLetter(c))
- state = S3;
- else
+ if (! isLowerCaseLetter(c))
return false;
+ state = S3;
} else if (state == S3) { // NOSONAR - State check
necessary for state machine
if (c == ':')
state = S4;
@@ -4609,7 +4608,7 @@ public class StringUtils {
"java:S3776" // Cognitive complexity acceptable for natural
comparison algorithm
})
public static int naturalCompare(String str1, String str2) {
- if (str1 == str2)
+ if (Objects.equals(str1, str2))
return 0;
if (str1 == null)
return -1;
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 b647839ae1..0a2bf284cb 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
@@ -3616,9 +3616,7 @@ public class BeanContext extends Context {
private static boolean isCacheable(Class<?> c) {
var n = c.getName();
var x = n.charAt(n.length() - 1); // All generated classes
appear to end with digits.
- if ((x >= '0' && x <= '9') && (n.indexOf("$$") != -1 ||
n.startsWith("sun") || n.startsWith("com.sun") || n.indexOf("$Proxy") != -1))
- return false;
- return true;
+ return !((x >= '0' && x <= '9') && (n.indexOf("$$") != -1 ||
n.startsWith("sun") || n.startsWith("com.sun") || n.indexOf("$Proxy") != -1));
}
private final OptionalSupplier<WriterSerializer> beanToStringSerializer;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
index bb311aba02..f9c9a48b84 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParserSession.java
@@ -214,9 +214,7 @@ public class UrlEncodingParserSession extends
UonParserSession {
*/
public final boolean shouldUseExpandedParams(BeanPropertyMeta pMeta) {
var cm = pMeta.getClassMeta().getSerializedClassMeta(this);
- if (cm.isCollectionOrArray() && (isExpandedParams() ||
getUrlEncodingClassMeta(pMeta.getBeanMeta().getClassMeta()).isExpandedParams()))
- return true;
- return false;
+ return cm.isCollectionOrArray() && (isExpandedParams() ||
getUrlEncodingClassMeta(pMeta.getBeanMeta().getClassMeta()).isExpandedParams());
}
@SuppressWarnings({
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
index a87cb2718c..69f7ab80c4 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
@@ -380,9 +380,7 @@ public class UrlEncodingSerializerSession extends
UonSerializerSession {
*/
private boolean shouldUseExpandedParams(BeanPropertyMeta pMeta) {
var cm = pMeta.getClassMeta().getSerializedClassMeta(this);
- if (cm.isCollectionOrArray() && (isExpandedParams() ||
getUrlEncodingClassMeta(pMeta.getBeanMeta().getClassMeta()).isExpandedParams()))
- return true;
- return false;
+ return cm.isCollectionOrArray() && (isExpandedParams() ||
getUrlEncodingClassMeta(pMeta.getBeanMeta().getClassMeta()).isExpandedParams());
}
/*
@@ -392,9 +390,7 @@ public class UrlEncodingSerializerSession extends
UonSerializerSession {
if (value == null || ! isExpandedParams())
return false;
var cm =
getClassMetaForObject(value).getSerializedClassMeta(this);
- if (cm.isCollectionOrArray() && isExpandedParams())
- return true;
- return false;
+ return cm.isCollectionOrArray() && isExpandedParams();
}
@Override /* Overridden from SerializerSession */
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/bean/swagger/ui/SwaggerUI_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/bean/swagger/ui/SwaggerUI_Test.java
index aa85931f2f..5f50e8262a 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/bean/swagger/ui/SwaggerUI_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/bean/swagger/ui/SwaggerUI_Test.java
@@ -163,59 +163,11 @@ class SwaggerUI_Test extends TestBase {
}
/**
- * Test method for empty Swagger document.
+ * Test method for Swagger documents with empty paths.
*/
- @Test void a07_emptySwaggerDocument() throws Exception {
- var swagger = swagger()
- .setInfo(info("Test API", "1.0.0"))
- .setPaths(new HashMap<>());
-
- assertString(
- """
- <div class='swagger-ui'>
- <style></style>
- <script type='text/javascript'><sp/></script>
- <table class='header'>
- <tr><th>Version:</th><td>1.0.0</td></tr>
- </table>
- <div class='tag-block tag-block-open'>
- <div class='tag-block-contents'></div>
- </div>
- </div>
- """.replaceAll("\\n\\s*", ""),
- new SwaggerUI().swap(bs, swagger)
- );
- }
-
- /**
- * Test method for Swagger document with external documentation.
- */
- @Test void a08_swaggerWithExternalDocs() throws Exception {
- var swagger = swagger()
- .setInfo(info("Test API", "1.0.0"))
- .setPaths(new HashMap<>());
-
- assertString(
- """
- <div class='swagger-ui'>
- <style></style>
- <script type='text/javascript'><sp/></script>
- <table class='header'>
- <tr><th>Version:</th><td>1.0.0</td></tr>
- </table>
- <div class='tag-block tag-block-open'>
- <div class='tag-block-contents'></div>
- </div>
- </div>
- """.replaceAll("\\n\\s*", ""),
- new SwaggerUI().swap(bs, swagger)
- );
- }
-
- /**
- * Test method for Swagger document with security schemes.
- */
- @Test void a09_swaggerWithSecuritySchemes() throws Exception {
+ @ParameterizedTest
+ @MethodSource("swaggerWithEmptyPathsTestData")
+ void a07_swaggerWithEmptyPaths(String testName) throws Exception {
var swagger = swagger()
.setInfo(info("Test API", "1.0.0"))
.setPaths(new HashMap<>());
@@ -237,28 +189,12 @@ class SwaggerUI_Test extends TestBase {
);
}
- /**
- * Test method for Swagger document with multiple operations.
- */
- @Test void a10_swaggerWithMultipleOperations() throws Exception {
- var swagger = swagger()
- .setInfo(info("Test API", "1.0.0"))
- .setPaths(new HashMap<>());
-
- assertString(
- """
- <div class='swagger-ui'>
- <style></style>
- <script type='text/javascript'><sp/></script>
- <table class='header'>
- <tr><th>Version:</th><td>1.0.0</td></tr>
- </table>
- <div class='tag-block tag-block-open'>
- <div class='tag-block-contents'></div>
- </div>
- </div>
- """.replaceAll("\\n\\s*", ""),
- new SwaggerUI().swap(bs, swagger)
+ static Stream<Arguments> swaggerWithEmptyPathsTestData() {
+ return Stream.of(
+ Arguments.of("emptySwaggerDocument"),
+ Arguments.of("swaggerWithExternalDocs"),
+ Arguments.of("swaggerWithSecuritySchemes"),
+ Arguments.of("swaggerWithMultipleOperations")
);
}
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/commons/inject/BasicBeanStore_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/commons/inject/BasicBeanStore_Test.java
index 7eeca55b27..daa61b5ba1 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/commons/inject/BasicBeanStore_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/commons/inject/BasicBeanStore_Test.java
@@ -336,37 +336,24 @@ class BasicBeanStore_Test extends TestBase {
assertFalse(result.isPresent());
}
- @Test
- void h02_getBean_named_found() {
- var store = new BasicBeanStore2(null);
- var bean = new TestBean("test1");
- store.addBean(TestBean.class, bean, "name1");
-
- var result = store.getBean(TestBean.class, "name1");
- assertTrue(result.isPresent());
- assertSame(bean, result.get());
- }
-
- @Test
- void h03_getBean_named_nullName() {
+ @ParameterizedTest
+ @MethodSource("getBeanNamedTestData")
+ void h02_getBean_named(String name) {
var store = new BasicBeanStore2(null);
var bean = new TestBean("test1");
- store.addBean(TestBean.class, bean, null);
+ store.addBean(TestBean.class, bean, name);
- var result = store.getBean(TestBean.class, null);
+ var result = store.getBean(TestBean.class, name);
assertTrue(result.isPresent());
assertSame(bean, result.get());
}
- @Test
- void h04_getBean_named_emptyString() {
- var store = new BasicBeanStore2(null);
- var bean = new TestBean("test1");
- store.addBean(TestBean.class, bean, "");
-
- var result = store.getBean(TestBean.class, "");
- assertTrue(result.isPresent());
- assertSame(bean, result.get());
+ static Stream<Arguments> getBeanNamedTestData() {
+ return Stream.of(
+ Arguments.of("name1"),
+ Arguments.of((String)null),
+ Arguments.of("")
+ );
}
@Test
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/commons/lang/HashCode_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/commons/lang/HashCode_Test.java
index 8b53723928..8e3024abe1 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/commons/lang/HashCode_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/commons/lang/HashCode_Test.java
@@ -45,21 +45,34 @@ class HashCode_Test extends TestBase {
assertNotSame(hc1, hc2);
}
- @Test
- void a02_create_initialHashCode() {
- var hc = HashCode.create();
- assertEquals(1, hc.get());
+ @ParameterizedTest
+ @MethodSource("initialHashCodeTestData")
+ void a02_create_initialHashCode(String testName) {
+ int expectedHashCode = 1;
+ if ("create".equals(testName)) {
+ var hc = HashCode.create();
+ assertEquals(expectedHashCode, hc.get());
+ } else if ("of_empty".equals(testName)) {
+ var hashCode = HashCode.of();
+ assertEquals(expectedHashCode, hashCode);
+ } else if ("get_initialValue".equals(testName)) {
+ var hc = HashCode.create();
+ assertEquals(expectedHashCode, hc.get());
+ }
+ }
+
+ static Stream<Arguments> initialHashCodeTestData() {
+ return Stream.of(
+ Arguments.of("create"),
+ Arguments.of("of_empty"),
+ Arguments.of("get_initialValue")
+ );
}
//====================================================================================================
// of(Object...) tests
//====================================================================================================
- @Test
- void b01_of_empty() {
- var hashCode = HashCode.of();
- assertEquals(1, hashCode);
- }
@Test
void b02_of_singleObject() {
@@ -345,11 +358,6 @@ class HashCode_Test extends TestBase {
// get() tests
//====================================================================================================
- @Test
- void h01_get_initialValue() {
- var hc = HashCode.create();
- assertEquals(1, hc.get());
- }
@Test
void h02_get_afterAdd() {
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/commons/lang/Version_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/commons/lang/Version_Test.java
index 75846fcb05..111fe8f975 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/commons/lang/Version_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/commons/lang/Version_Test.java
@@ -286,26 +286,20 @@ class Version_Test extends TestBase {
});
}
- @Test
- void c09_hashCode_largeVersions() {
- var v1 = of("1.2.3.4.5.6.7.8.9.10");
- var v2 = of("1.2.3.4.5.6.7.8.9.10");
- assertEquals(v1.hashCode(), v2.hashCode());
- }
-
- @Test
- void c10_hashCode_withZeros() {
- var v1 = of("1.0.0");
- var v2 = of("1.0.0");
+ @ParameterizedTest
+ @MethodSource("hashCodeConsistencyTestData")
+ void c09_hashCode_consistency(String versionString) {
+ var v1 = of(versionString);
+ var v2 = of(versionString);
assertEquals(v1.hashCode(), v2.hashCode());
}
- @Test
- void c11_hashCode_withMaxValue() {
- var v1 = of("1.x");
- var v2 = of("1.x");
- // Non-numeric parts become Integer.MAX_VALUE
- assertEquals(v1.hashCode(), v2.hashCode());
+ static Stream<Arguments> hashCodeConsistencyTestData() {
+ return Stream.of(
+ Arguments.of("1.2.3.4.5.6.7.8.9.10"),
+ Arguments.of("1.0.0"),
+ Arguments.of("1.x")
+ );
}
@Test
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/commons/reflect/PackageInfo_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/commons/reflect/PackageInfo_Test.java
index 595bd585f9..9f55516359 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/commons/reflect/PackageInfo_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/commons/reflect/PackageInfo_Test.java
@@ -260,7 +260,7 @@ class PackageInfo_Test extends TestBase {
@Test
void a016_isSealed() {
var pi = PackageInfo.of(TestClass1.class);
- assertDoesNotThrow(() -> pi.isSealed());
+
assertDoesNotThrow((org.junit.jupiter.api.function.Executable)pi::isSealed);
// Most packages are not sealed
}
diff --git a/scripts/check-fluent-setter-overrides.py
b/scripts/check-fluent-setter-overrides.py
index 065a164a36..5f4ac75ffb 100755
--- a/scripts/check-fluent-setter-overrides.py
+++ b/scripts/check-fluent-setter-overrides.py
@@ -115,6 +115,7 @@ def extract_class_info(file_path):
# Find class declarations (public class X extends Y)
# NOSONAR: S5843 - Regex complexity acceptable for Java class
declaration parsing
+ # NOSONAR: python:S5843 - Regex complexity (27) acceptable for Java
class declaration parsing
class_pattern = re.compile(
r'^\s*public\s+(?:static\s+)?(?:abstract\s+)?class\s+(\w+)(?:\s+extends\s+([\w.<>,
]+?))?(?:\s+implements\s+[\w.<>, ]+?)?\s*\{',
re.MULTILINE