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 ae886f5392 SonarQube bug fixes
ae886f5392 is described below
commit ae886f5392f198bc1c211c6b08553fc58ce6d5c4
Author: James Bognar <[email protected]>
AuthorDate: Wed Feb 18 12:16:38 2026 -0500
SonarQube bug fixes
---
.../commons/annotation/AppliedOnClassAnnotationObject.java | 4 ++++
.../juneau/commons/collections/ControlledArrayList.java | 10 ++++++++++
.../src/main/java/org/apache/juneau/AnnotationWorkList.java | 10 ++++++++++
.../src/main/java/org/apache/juneau/BeanPropertyValue.java | 10 ++++++++++
.../src/main/java/org/apache/juneau/MediaRange.java | 11 +++++++++++
.../java/org/apache/juneau/internal/FilteredKeyMap.java | 11 +++++++++++
.../java/org/apache/juneau/objecttools/ObjectSorter.java | 10 ++++++++++
.../main/java/org/apache/juneau/svl/ResolvingJsonMap.java | 10 ++++++++++
.../main/java/org/apache/juneau/http/BasicStatusLine.java | 13 +++++++++++++
.../main/java/org/apache/juneau/http/header/EntityTag.java | 10 ++++++++++
.../main/java/org/apache/juneau/http/header/EntityTags.java | 12 ++++++++++++
.../java/org/apache/juneau/http/header/HeaderBeanMeta.java | 11 +++++++++++
.../main/java/org/apache/juneau/http/part/BasicPart.java | 10 ++++++++++
.../org/apache/juneau/http/remote/RrpcInterfaceMeta.java | 11 +++++++++++
.../apache/juneau/http/remote/RrpcInterfaceMethodMeta.java | 11 +++++++++++
.../java/org/apache/juneau/rest/util/UrlPathMatcher.java | 10 ++++++++++
16 files changed, 164 insertions(+)
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/annotation/AppliedOnClassAnnotationObject.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/annotation/AppliedOnClassAnnotationObject.java
index 33024a971b..39d79aec43 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/annotation/AppliedOnClassAnnotationObject.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/annotation/AppliedOnClassAnnotationObject.java
@@ -82,6 +82,10 @@ import static
org.apache.juneau.commons.utils.CollectionUtils.*;
* <li class='link'><a class="doclink"
href="../../../../../overview-summary.html#juneau-commons.Annotations">Overview
> juneau-commons > Annotations</a>
* </ul>
*/
+// java:S1206: Intentionally inherit equals/hashCode from AnnotationObject.
Overriding would require
+// instanceof AppliedOnClassAnnotationObject, which breaks comparison with
declarative annotations (JDK proxies),
+// causing BeanContext/PropertyStore cache misses and schema validation
failures (see XmlAnnotation_Test, FormData_Test).
+@SuppressWarnings("java:S1206")
public class AppliedOnClassAnnotationObject extends AppliedAnnotationObject {
private final Class<?>[] onClass;
diff --git
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/ControlledArrayList.java
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/ControlledArrayList.java
index 1948d939dd..b118fd471b 100644
---
a/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/ControlledArrayList.java
+++
b/juneau-core/juneau-commons/src/main/java/org/apache/juneau/commons/collections/ControlledArrayList.java
@@ -150,6 +150,16 @@ public class ControlledArrayList<E> extends ArrayList<E> {
this.unmodifiable = unmodifiable;
}
+ @Override /* Overridden from Object */
+ public boolean equals(Object o) {
+ return this == o || (o instanceof ControlledArrayList<?> other
&& super.equals(other) && unmodifiable == other.unmodifiable);
+ }
+
+ @Override /* Overridden from Object */
+ public int hashCode() {
+ return super.hashCode() + Boolean.hashCode(unmodifiable);
+ }
+
/**
* Constructor.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationWorkList.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationWorkList.java
index 82fce049c1..db08c054e5 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationWorkList.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationWorkList.java
@@ -86,6 +86,16 @@ public class AnnotationWorkList extends
ArrayList<AnnotationWork> {
this.vrs = assertArgNotNull(ARG_vrs, vrs);
}
+ @Override /* Overridden from Object */
+ public boolean equals(Object o) {
+ return this == o || (o instanceof AnnotationWorkList other &&
super.equals(other));
+ }
+
+ @Override /* Overridden from Object */
+ public int hashCode() {
+ return super.hashCode();
+ }
+
/**
* Adds an entry to this list.
*
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 be1651dfca..a87df0b433 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
@@ -57,6 +57,16 @@ public class BeanPropertyValue implements
Comparable<BeanPropertyValue> {
return name.compareTo(o.name);
}
+ @Override /* Overridden from Object */
+ public boolean equals(Object o) {
+ return o instanceof BeanPropertyValue other && compareTo(other)
== 0;
+ }
+
+ @Override /* Overridden from Object */
+ public int hashCode() {
+ return name != null ? name.hashCode() : 0;
+ }
+
/**
* Returns the bean property metadata.
*
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MediaRange.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MediaRange.java
index 38c0988607..146c16ed40 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MediaRange.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/MediaRange.java
@@ -17,6 +17,7 @@
package org.apache.juneau;
import static org.apache.juneau.commons.utils.CollectionUtils.*;
+import static org.apache.juneau.commons.utils.Utils.*;
import java.util.*;
import java.util.function.*;
@@ -129,4 +130,14 @@ public class MediaRange extends MediaType {
public String toString() {
return string;
}
+
+ @Override /* Overridden from Object */
+ public boolean equals(Object o) {
+ return o instanceof MediaRange other && eq(this, other, (x, y)
-> eq(x.string, y.string));
+ }
+
+ @Override /* Overridden from Object */
+ public int hashCode() {
+ return string != null ? string.hashCode() : 0;
+ }
}
\ No newline at end of file
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FilteredKeyMap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FilteredKeyMap.java
index e1d2d8555b..553871458a 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FilteredKeyMap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/internal/FilteredKeyMap.java
@@ -17,6 +17,7 @@
package org.apache.juneau.internal;
import static org.apache.juneau.commons.utils.AssertionUtils.*;
+import static org.apache.juneau.commons.utils.Utils.*;
import java.util.*;
@@ -92,6 +93,16 @@ public class FilteredKeyMap<K,V> extends AbstractMap<K,V>
implements Delegate<Ma
@Override /* Overridden from Delegate */
public ClassMeta<Map<K,V>> getClassMeta() { return classMeta; }
+ @Override /* Overridden from Object */
+ public boolean equals(Object o) {
+ return o instanceof Map<?,?> o2 && eq(this, o2, (x, y) ->
x.entrySet().equals(y.entrySet()));
+ }
+
+ @Override /* Overridden from Object */
+ public int hashCode() {
+ return entries.hashCode();
+ }
+
private Map.Entry<K,V> createEntry(K key) {
return new Map.Entry<>() {
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSorter.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSorter.java
index bce6b58949..1d184bbb90 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSorter.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/objecttools/ObjectSorter.java
@@ -82,6 +82,16 @@ public class ObjectSorter implements ObjectTool<SortArgs> {
return cmp(this.sortVal, ((SortEntry)o).sortVal);
}
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof SortEntry other && compareTo(other)
== 0;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(sortVal);
+ }
+
void setSort(String sortCol, boolean isDesc) {
this.isDesc = isDesc;
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/ResolvingJsonMap.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/ResolvingJsonMap.java
index 317497d192..d54eef6aaa 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/ResolvingJsonMap.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/svl/ResolvingJsonMap.java
@@ -55,6 +55,16 @@ public class ResolvingJsonMap extends JsonMap {
this.varResolver = varResolver;
}
+ @Override /* Overridden from Object */
+ public boolean equals(Object o) {
+ return this == o || (o instanceof ResolvingJsonMap other &&
super.equals(o));
+ }
+
+ @Override /* Overridden from Object */
+ public int hashCode() {
+ return super.hashCode();
+ }
+
@Override /* Overridden from JsonMap */
public ResolvingJsonMap append(Map<String,Object> values) {
super.append(values);
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/BasicStatusLine.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/BasicStatusLine.java
index 183f5a5889..15f88ae6fc 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/BasicStatusLine.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/BasicStatusLine.java
@@ -20,6 +20,7 @@ import static
org.apache.juneau.commons.utils.ThrowableUtils.*;
import static org.apache.juneau.commons.utils.Utils.*;
import java.util.*;
+import java.util.Objects;
import org.apache.http.*;
import org.apache.http.impl.*;
@@ -204,6 +205,18 @@ public class BasicStatusLine implements StatusLine {
return BasicLineFormatter.INSTANCE.formatStatusLine(null,
this).toString();
}
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof BasicStatusLine other && eq(this, other,
(x, y) ->
+ eq(x.protocolVersion, y.protocolVersion) &&
x.statusCode == y.statusCode
+ && eq(x.reasonPhrase, y.reasonPhrase) && eq(x.locale,
y.locale));
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(protocolVersion, statusCode, reasonPhrase,
locale);
+ }
+
/**
* Throws an {@link UnsupportedOperationException} if the unmodifiable
flag is set on this bean.
*/
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTag.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTag.java
index b172d3e608..f6882a0878 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTag.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTag.java
@@ -105,6 +105,16 @@ public class EntityTag {
*/
public boolean isWeak() { return isWeak; }
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof EntityTag other && eq(this, other, (x, y)
-> x.isWeak == y.isWeak && x.isAny == y.isAny && eq(x.value, y.value));
+ }
+
+ @Override
+ public int hashCode() {
+ return (value != null ? value.hashCode() : 0) +
Boolean.hashCode(isWeak) + Boolean.hashCode(isAny);
+ }
+
@Override
public String toString() {
return (isWeak ? "W/" : "") + (isAny() ? "*" : ('"' + value +
'"'));
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
index c10e362516..94345367ed 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/EntityTags.java
@@ -18,6 +18,8 @@ package org.apache.juneau.http.header;
import static org.apache.juneau.commons.utils.CollectionUtils.*;
import static org.apache.juneau.commons.utils.StringUtils.*;
+import static org.apache.juneau.commons.utils.Utils.*;
+
import java.util.*;
import org.apache.juneau.annotation.*;
@@ -101,6 +103,16 @@ public class EntityTags {
return u(l(value));
}
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof EntityTags other && eq(this, other, (x, y)
-> Arrays.equals(x.value, y.value));
+ }
+
+ @Override
+ public int hashCode() {
+ return Arrays.hashCode(value);
+ }
+
@Override /* Overridden from Object */
public String toString() {
return string;
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/HeaderBeanMeta.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/HeaderBeanMeta.java
index 4300db8d64..655d9a8d75 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/HeaderBeanMeta.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/header/HeaderBeanMeta.java
@@ -20,6 +20,7 @@ import static
org.apache.juneau.commons.utils.ThrowableUtils.*;
import static org.apache.juneau.commons.utils.Utils.*;
import java.lang.reflect.*;
+import java.util.Objects;
import java.util.concurrent.*;
import org.apache.juneau.commons.reflect.*;
@@ -155,6 +156,16 @@ public class HeaderBeanMeta<T> {
}
}
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof HeaderBeanMeta<?> other && eq(this, other,
(x, y) -> x.type == y.type);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(type);
+ }
+
/**
* Returns schema information about this header.
*
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicPart.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicPart.java
index b576eaaef3..ec4acadda3 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicPart.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/part/BasicPart.java
@@ -183,6 +183,16 @@ public class BasicPart implements NameValuePair,
Headerable {
@Override /* Overridden from NameValuePair */
public String getValue() { return s(unwrap(value)); }
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof NameValuePair nvp && eq(this, nvp, (x, y)
-> eq(x.getName(), y.getName()) && eq(x.getValue(), y.getValue()));
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, getValue());
+ }
+
@Override /* Overridden from Object */
public String toString() {
return getName() + "=" + getValue();
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.java
index 331cd670b9..0e72c5b9cc 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMeta.java
@@ -18,6 +18,7 @@ package org.apache.juneau.http.remote;
import static org.apache.juneau.commons.utils.CollectionUtils.*;
import static org.apache.juneau.commons.utils.StringUtils.*;
+import static org.apache.juneau.commons.utils.Utils.*;
import java.lang.reflect.*;
import java.util.*;
@@ -121,4 +122,14 @@ public class RrpcInterfaceMeta {
* <br>Never has leading or trailing slashes.
*/
public String getPath() { return path; }
+
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof RrpcInterfaceMeta other && eq(this, other,
(x, y) -> x.c == y.c);
+ }
+
+ @Override
+ public int hashCode() {
+ return System.identityHashCode(c);
+ }
}
\ No newline at end of file
diff --git
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMethodMeta.java
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMethodMeta.java
index d476a05299..c5bbbe8d94 100644
---
a/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMethodMeta.java
+++
b/juneau-rest/juneau-rest-common/src/main/java/org/apache/juneau/http/remote/RrpcInterfaceMethodMeta.java
@@ -17,6 +17,7 @@
package org.apache.juneau.http.remote;
import static org.apache.juneau.commons.utils.StringUtils.*;
+import static org.apache.juneau.commons.utils.Utils.*;
import java.lang.reflect.*;
@@ -99,4 +100,14 @@ public class RrpcInterfaceMethodMeta {
* @return The absolute URL of the REST interface, never <jk>null</jk>.
*/
public String getUri() { return url; }
+
+ @Override
+ public boolean equals(Object o) {
+ return o instanceof RrpcInterfaceMethodMeta other && eq(this,
other, (x, y) -> x.method.equals(y.method));
+ }
+
+ @Override
+ public int hashCode() {
+ return method.hashCode();
+ }
}
\ No newline at end of file
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/UrlPathMatcher.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/UrlPathMatcher.java
index 92759d8117..da50db1e4c 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/UrlPathMatcher.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/UrlPathMatcher.java
@@ -212,6 +212,16 @@ public abstract class UrlPathMatcher implements
Comparable<UrlPathMatcher> {
return o.getComparator().compareTo(getComparator());
}
+ @Override /* Overridden from Object */
+ public boolean equals(Object o) {
+ return o instanceof UrlPathMatcher other && compareTo(other) ==
0;
+ }
+
+ @Override /* Overridden from Object */
+ public int hashCode() {
+ return getComparator() != null ? getComparator().hashCode() : 0;
+ }
+
/**
* Returns the variable names found in the pattern.
*