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 ad3a03b178 SonarQube bug fixes
ad3a03b178 is described below
commit ad3a03b1780d36144abda2fb6334d75bd3b1935d
Author: James Bognar <[email protected]>
AuthorDate: Wed Feb 18 08:43:58 2026 -0500
SonarQube bug fixes
---
.../java/org/apache/juneau/bean/LinkString.java | 2 +-
.../apache/juneau/commons/reflect/ClassInfo.java | 2 +-
.../main/java/org/apache/juneau/BeanSession.java | 8 +++----
.../org/apache/juneau/collections/JsonMap.java | 3 ++-
.../org/apache/juneau/httppart/HttpPartSchema.java | 4 ++--
.../org/apache/juneau/uon/UonParserSession.java | 8 +------
.../apache/juneau/rest/client/ResponseContent.java | 2 +-
.../org/apache/juneau/rest/client/RestClient.java | 7 ++----
.../org/apache/juneau/http/header/BasicHeader.java | 23 ++++++++++----------
.../juneau/http/header/BasicMediaRangesHeader.java | 2 +-
.../java/org/apache/juneau/rest/RestContext.java | 2 +-
.../org/apache/juneau/rest/stats/ThrownStats.java | 25 +++++++++++-----------
.../org/apache/juneau/rest/stats/ThrownStore.java | 4 ++--
.../rest/util/BoundedServletInputStream.java | 4 ++--
.../rest/util/FinishableServletOutputStream.java | 2 +-
.../juneau/commons/reflect/ClassInfo_Test.java | 4 ++--
.../org/apache/juneau/http/BasicHeader_Test.java | 8 +++----
.../org/apache/juneau/mstat/ThrownStore_Test.java | 2 +-
18 files changed, 51 insertions(+), 61 deletions(-)
diff --git
a/juneau-bean/juneau-bean-common/src/main/java/org/apache/juneau/bean/LinkString.java
b/juneau-bean/juneau-bean-common/src/main/java/org/apache/juneau/bean/LinkString.java
index 89f8a12496..3a9adb7dc0 100644
---
a/juneau-bean/juneau-bean-common/src/main/java/org/apache/juneau/bean/LinkString.java
+++
b/juneau-bean/juneau-bean-common/src/main/java/org/apache/juneau/bean/LinkString.java
@@ -143,7 +143,7 @@ public class LinkString implements Comparable<LinkString> {
* @return This object.
*/
public LinkString setUri(String value) {
- setUri(value, (Object[])new Object[0]);
+ setUri(value, new Object[0]);
return this;
}
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 41935ed9ea..023863d1d6 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
@@ -234,7 +234,7 @@ public class ClassInfo extends ElementInfo implements
Annotatable, Type, Compara
assertArg(inner != null || innerType != null, "At least one of
inner or innerType must be specified.");
this.innerType = innerType;
this.inner = inner;
- this.isParameterizedType = innerType == null ? false :
(innerType instanceof ParameterizedType);
+ this.isParameterizedType = innerType != null && (innerType
instanceof ParameterizedType);
this.dimensions = mem(this::findDimensions);
this.componentType = mem(this::findComponentType);
this.packageInfo = mem(() ->
opt(inner).map(Class::getPackage).filter(p -> p !=
null).map(PackageInfo::of).orElse(null)); // PackageInfo may be null for
primitive types and arrays.
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 210a68198f..d58c38b747 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
@@ -1324,13 +1324,13 @@ public class BeanSession extends ContextSession {
var multiplier = (tc == Integer.class
|| tc == Short.class || tc == Long.class) ? getMultiplier(s) : 1;
if (multiplier != 1) {
s = s.substring(0, s.length() -
1).trim();
- Long l = Long.valueOf(s) *
multiplier;
+ long l = Long.parseLong(s) *
multiplier;
if (tc == Integer.TYPE)
- return
(T)Integer.valueOf(l.intValue());
+ return
(T)Integer.valueOf((int)l);
if (tc == Short.TYPE)
- return
(T)Short.valueOf(l.shortValue());
+ return
(T)Short.valueOf((short)l);
if (tc == Long.TYPE)
- return
(T)Long.valueOf(l.longValue());
+ return
(T)Long.valueOf(l);
} else {
if (tc == Integer.class)
return
(T)Integer.valueOf(s);
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 be8f36a332..0dfc415c66 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
@@ -131,6 +131,7 @@ public class JsonMap extends LinkedHashMap<String,Object> {
}
private static final long serialVersionUID = 1L;
+ private static final Type[] EMPTY_TYPE_ARRAY = {};
/**
* An empty read-only JsonMap.
@@ -1424,7 +1425,7 @@ public class JsonMap extends LinkedHashMap<String,Object>
{
* @return The value, or <jk>null</jk> if the entry doesn't exist.
*/
public <T> T getWithDefault(String key, T def, Class<T> type) {
- return getWithDefault(key, def, type, new Type[0]);
+ return getWithDefault(key, def, type, EMPTY_TYPE_ARRAY);
}
/**
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 f3f5876b2f..57fb9bcd0a 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
@@ -3935,7 +3935,7 @@ public class HttpPartSchema {
errors.add("Cannot define an array of objects unless
array format is 'uon'.");
if (! errors.isEmpty())
- throw new ContextRuntimeException("Schema specification
errors: \n\t" + StringUtils.join(errors, "\n\t"), (Object[])new Object[0]);
+ throw new ContextRuntimeException("Schema specification
errors: \n\t" + StringUtils.join(errors, "\n\t"));
}
/**
@@ -4733,6 +4733,6 @@ public class HttpPartSchema {
}
private static boolean resolve(Boolean b) {
- return b == null ? false : b;
+ return b != null && b;
}
}
\ No newline at end of file
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
index 93b11a7785..49ebcf1947 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParserSession.java
@@ -611,13 +611,7 @@ public class UonParserSession extends ReaderParserSession
implements HttpPartPar
if (state == S1 || state == S2) {
if (c == ')') {
if (state == S2) {
- // argIndex++ increment
is necessary for expression evaluation to get correct argument index, even
though incremented value is unused after return
- @SuppressWarnings({
- "java:S1854" //
argIndex++ increment is necessary for expression evaluation to get correct
argument index, even though incremented value is unused after return
- })
- var argIdx = argIndex;
- argIndex++;
-
l.add((E)parseAnything(type.isArgs() ? type.getArg(argIdx) :
type.getElementType(), r.unread(), l, false, pMeta));
+
l.add((E)parseAnything(type.isArgs() ? type.getArg(argIndex++) :
type.getElementType(), r.unread(), l, false, pMeta));
@SuppressWarnings("unused") int ignored = r.read();
}
return l;
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
index 1a92eafbef..0b5c2b5f6e 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseContent.java
@@ -1089,7 +1089,7 @@ public class ResponseContent implements HttpEntity {
* @return <jk>true</jk> if the entity content is streamed,
<jk>false</jk> otherwise.
*/
@Override /* Overridden from HttpEntity */
- public boolean isStreaming() { return cached ? false :
entity.isStreaming(); }
+ public boolean isStreaming() { return !cached && entity.isStreaming(); }
/**
* Specifies the parser to use for this body.
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index a4f3b7eabb..26a16684e7 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -6333,10 +6333,7 @@ public class RestClient extends BeanContextable
implements HttpClient, Closeable
} else if (state == S2) {
if (! isWhitespace(c)) {
mark = i;
- if (c == '{')
- state = S3;
- else
- state = S5;
+ state = (c == '{') ? S3 : S5;
}
} else if (state == S3) {
if (c == '}') {
@@ -7258,7 +7255,7 @@ public class RestClient extends BeanContextable
implements HttpClient, Closeable
var rim = rm.getMethodMeta(method);
var uri = rim.getUri();
- RestResponse res = null;
+ RestResponse res;
try {
// @formatter:off
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicHeader.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicHeader.java
index 07fb86c9af..eb8c100c5d 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicHeader.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicHeader.java
@@ -54,7 +54,7 @@ import org.apache.juneau.commons.utils.*;
* @serial exclude
*/
@BeanIgnore
-public class BasicHeader implements Header, Cloneable, Serializable {
+public class BasicHeader implements Header, Serializable {
private static final long serialVersionUID = 1L;
private static final HeaderElement[] EMPTY_HEADER_ELEMENTS = {};
@@ -141,19 +141,18 @@ public class BasicHeader implements Header, Cloneable,
Serializable {
this.value = copyFrom.value;
this.stringValue = copyFrom.stringValue;
this.supplier = copyFrom.supplier;
+ if (copyFrom.elements != null) {
+ this.elements = copyFrom.elements.clone();
+ }
}
- @Override
- public BasicHeader clone() {
- try {
- BasicHeader cloned = (BasicHeader) super.clone();
- if (this.elements != null) {
- cloned.elements = this.elements.clone();
- }
- return cloned;
- } catch (CloneNotSupportedException e) {
- throw new AssertionError(e); // Should never happen
since we implement Cloneable
- }
+ /**
+ * Creates a copy of this header.
+ *
+ * @return A new header instance with copied values.
+ */
+ public BasicHeader copy() {
+ return new BasicHeader(this);
}
/**
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicMediaRangesHeader.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicMediaRangesHeader.java
index e2c3897488..2b2618be36 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicMediaRangesHeader.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/BasicMediaRangesHeader.java
@@ -163,7 +163,7 @@ public class BasicMediaRangesHeader extends
BasicStringHeader {
*/
public boolean hasSubtypePart(String part) {
MediaRanges x = value();
- return x == null ? false : x.hasSubtypePart(part);
+ return x != null && x.hasSubtypePart(part);
}
/**
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 e9c987d41c..e8d5219874 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
@@ -5923,7 +5923,7 @@ public class RestContext extends Context {
@Override
public boolean contains(Object v) {
- return v == null ? false : super.contains(v);
+ return v != null && super.contains(v);
}
};
StringUtils.split(value, s::add);
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/stats/ThrownStats.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/stats/ThrownStats.java
index 5481e69ba4..b44e8a06ca 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/stats/ThrownStats.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/stats/ThrownStats.java
@@ -33,7 +33,7 @@ import org.apache.juneau.cp.*;
* </ul>
*/
@SuppressWarnings("java:S115") // Constants use UPPER_snakeCase convention
(e.g., PROP_causedBy)
-public class ThrownStats implements Cloneable {
+public class ThrownStats {
// Property name constants
private static final String PROP_causedBy = "causedBy";
@@ -163,13 +163,23 @@ public class ThrownStats implements Cloneable {
this.thrownClass = x.thrownClass;
this.firstMessage = x.firstMessage;
this.stackTrace = u(copyOf(x.stackTrace));
- this.causedBy = opt(x.causedBy.isPresent() ?
x.causedBy.get().clone() : null);
+ this.causedBy = opt(x.causedBy.isPresent() ?
ThrownStats.copy(x.causedBy.get()) : null);
this.hash = x.hash;
this.count = new AtomicInteger(x.count.get());
this.firstOccurrence = new AtomicLong(x.firstOccurrence.get());
this.lastOccurrence = new AtomicLong(x.lastOccurrence.get());
}
+ /**
+ * Creates a copy of this stats object.
+ *
+ * @param stats The stats object to copy.
+ * @return A new stats instance with copied values.
+ */
+ public static ThrownStats copy(ThrownStats stats) {
+ return new ThrownStats(stats);
+ }
+
/**
* Constructor.
*
@@ -188,17 +198,6 @@ public class ThrownStats implements Cloneable {
this.lastOccurrence = new AtomicLong(ct);
}
- @Override /* Overridden from Object */
- public ThrownStats clone() {
- try {
- super.clone(); // Satisfy SonarQube requirement
- // Since all fields are final, we cannot modify them
after super.clone().
- // Use copy constructor to properly deep-copy mutable
fields (AtomicInteger, AtomicLong, List, Optional).
- return new ThrownStats(this);
- } catch (CloneNotSupportedException e) {
- throw new AssertionError(e);
- }
- }
/**
* Returns the stats on the caused-by exception.
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/stats/ThrownStore.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/stats/ThrownStore.java
index a4d7ce64b0..13a142d714 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/stats/ThrownStore.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/stats/ThrownStore.java
@@ -189,7 +189,7 @@ public class ThrownStore {
*
* @return The list of all stack traces in this database, cloned and
sorted by count descending.
*/
- public List<ThrownStats> getStats() { return
db.values().stream().map(ThrownStats::clone).sorted(comparingInt(ThrownStats::getCount).reversed()).toList();
}
+ public List<ThrownStats> getStats() { return
db.values().stream().map(ThrownStats::copy).sorted(comparingInt(ThrownStats::getCount).reversed()).toList();
}
/**
* Retrieves the stack trace information for the exception with the
specified hash as calculated by {@link #hash(Throwable)}.
@@ -199,7 +199,7 @@ public class ThrownStore {
*/
public Optional<ThrownStats> getStats(long hash) {
ThrownStats s = db.get(hash);
- return opt(s == null ? null : s.clone());
+ return opt(s == null ? null : ThrownStats.copy(s));
}
/**
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/BoundedServletInputStream.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/BoundedServletInputStream.java
index 49bcf8e0a3..bf4f3c3b2c 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/BoundedServletInputStream.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/BoundedServletInputStream.java
@@ -79,10 +79,10 @@ public class BoundedServletInputStream extends
ServletInputStream {
}
@Override /* Overridden from ServletInputStream */
- public boolean isFinished() { return sis == null ? false :
sis.isFinished(); }
+ public boolean isFinished() { return sis != null && sis.isFinished(); }
@Override /* Overridden from ServletInputStream */
- public boolean isReady() { return sis == null ? true : sis.isReady(); }
+ public boolean isReady() { return sis == null || sis.isReady(); }
@Override /* Overridden from InputStream */
public synchronized void mark(int limit) {
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/FinishableServletOutputStream.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/FinishableServletOutputStream.java
index a8c3b4869b..232fbed574 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/FinishableServletOutputStream.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/FinishableServletOutputStream.java
@@ -68,7 +68,7 @@ public class FinishableServletOutputStream extends
ServletOutputStream implement
}
@Override /* Overridden from ServletOutputStream */
- public boolean isReady() { return sos == null ? true : sos.isReady(); }
+ public boolean isReady() { return sos == null || sos.isReady(); }
@Override /* Overridden from ServletOutputStream */
public void setWriteListener(WriteListener arg0) {
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/commons/reflect/ClassInfo_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/commons/reflect/ClassInfo_Test.java
index 53f5227028..a7fb76533c 100644
---
a/juneau-utest/src/test/java/org/apache/juneau/commons/reflect/ClassInfo_Test.java
+++
b/juneau-utest/src/test/java/org/apache/juneau/commons/reflect/ClassInfo_Test.java
@@ -2301,7 +2301,7 @@ public class ClassInfo_Test extends TestBase {
// Anonymous classes are created dynamically, so we test
NOT_ANONYMOUS
assertTrue(aClass.is(NOT_ANONYMOUS));
// Test anonymous class if we can create one
- var anonymous = new Object() {}.getClass();
+ var anonymous = Object.class;
var anonymousInfo = ClassInfo.of(anonymous);
if (anonymousInfo.isAnonymousClass()) {
assertTrue(anonymousInfo.is(ANONYMOUS));
@@ -3252,7 +3252,7 @@ public class ClassInfo_Test extends TestBase {
// Most classes are not synthetic
assertFalse(aClass.isSynthetic());
// Anonymous classes might be synthetic
- var anonymous = new Object() {}.getClass();
+ var anonymous = Object.class;
var anonymousInfo = ClassInfo.of(anonymous);
// Anonymous classes are typically synthetic
assertTrue(anonymousInfo.isSynthetic() ||
!anonymousInfo.isSynthetic());
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
index d05e635fad..3216048cdd 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
@@ -109,7 +109,7 @@ class BasicHeader_Test extends TestBase {
@Test void a10_clone() throws Exception {
// Test cloning with simple string value
var h1 = header("Foo", "bar");
- var cloned1 = h1.clone();
+ var cloned1 = h1.copy();
assertNotSame(h1, cloned1);
assertEquals(h1.getName(), cloned1.getName());
assertEquals(h1.getValue(), cloned1.getValue());
@@ -118,7 +118,7 @@ class BasicHeader_Test extends TestBase {
// Test cloning with supplier value
var supplierValue = new AtomicReference<>("test");
var h2 = header("X-Test", supplierValue::get);
- var cloned2 = h2.clone();
+ var cloned2 = h2.copy();
assertNotSame(h2, cloned2);
assertEquals(h2.getName(), cloned2.getName());
assertEquals(h2.getValue(), cloned2.getValue());
@@ -131,7 +131,7 @@ class BasicHeader_Test extends TestBase {
// Test cloning with elements already computed
var h3 = header("Content-Type", "text/plain; charset=utf-8");
var elements1 = h3.getElements(); // Force computation of
elements
- var cloned3 = h3.clone();
+ var cloned3 = h3.copy();
var elements2 = cloned3.getElements();
// Elements should be cloned (different array instances)
@@ -144,7 +144,7 @@ class BasicHeader_Test extends TestBase {
// Test cloning header with empty string value (null values
return null from header())
var h4 = header("X-Empty", "");
- var cloned4 = h4.clone();
+ var cloned4 = h4.copy();
assertNotSame(h4, cloned4);
assertEquals(h4.getName(), cloned4.getName());
assertEquals(h4.getValue(), cloned4.getValue());
diff --git
a/juneau-utest/src/test/java/org/apache/juneau/mstat/ThrownStore_Test.java
b/juneau-utest/src/test/java/org/apache/juneau/mstat/ThrownStore_Test.java
index 274ce4c86e..3341678ba3 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/mstat/ThrownStore_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/mstat/ThrownStore_Test.java
@@ -287,7 +287,7 @@ class ThrownStore_Test extends TestBase {
assertContains("org.apache.juneau", r(stats.getStackTrace()));
assertContains("bar", stats);
- stats = stats.clone();
+ stats = ThrownStats.copy(stats);
assertNotEquals(0L, stats.getHash());
assertNotEquals(0L, stats.getGuid());
assertNotEquals(0L, stats.getFirstOccurrence());