This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to refs/heads/main by this push:
     new dad0d20c5 AVRO-3956: [Java] Fix NPE in Protocol#equals (#2791)
dad0d20c5 is described below

commit dad0d20c5ea10a6347836b3936783fd5124731cc
Author: Roman Mitasov <[email protected]>
AuthorDate: Tue Mar 19 19:36:30 2024 +0600

    AVRO-3956: [Java] Fix NPE in Protocol#equals (#2791)
    
    * Fix NPE in Protocol#equals
    
    * Better Protocol#hashCode
---
 lang/java/avro/src/main/java/org/apache/avro/JsonProperties.java | 3 ++-
 lang/java/avro/src/main/java/org/apache/avro/Protocol.java       | 8 +++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/lang/java/avro/src/main/java/org/apache/avro/JsonProperties.java 
b/lang/java/avro/src/main/java/org/apache/avro/JsonProperties.java
index 300e583b4..0c100baa9 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/JsonProperties.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/JsonProperties.java
@@ -24,6 +24,7 @@ import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Queue;
+import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentLinkedQueue;
@@ -334,7 +335,7 @@ public abstract class JsonProperties {
   }
 
   boolean propsEqual(JsonProperties np) {
-    return props.equals(np.props);
+    return Objects.equals(props, np.props);
   }
 
   public boolean hasProps() {
diff --git a/lang/java/avro/src/main/java/org/apache/avro/Protocol.java 
b/lang/java/avro/src/main/java/org/apache/avro/Protocol.java
index f99df533b..e837e6008 100644
--- a/lang/java/avro/src/main/java/org/apache/avro/Protocol.java
+++ b/lang/java/avro/src/main/java/org/apache/avro/Protocol.java
@@ -39,6 +39,7 @@ import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 
 /**
@@ -390,13 +391,14 @@ public class Protocol extends JsonProperties {
     if (!(o instanceof Protocol))
       return false;
     Protocol that = (Protocol) o;
-    return this.name.equals(that.name) && 
this.namespace.equals(that.namespace) && this.types.equals(that.types)
-        && this.messages.equals(that.messages) && this.propsEqual(that);
+    return Objects.equals(this.name, that.name) && 
Objects.equals(this.namespace, that.namespace)
+        && Objects.equals(this.types, that.types) && 
Objects.equals(this.messages, that.messages)
+        && this.propsEqual(that);
   }
 
   @Override
   public int hashCode() {
-    return name.hashCode() + namespace.hashCode() + types.hashCode() + 
messages.hashCode() + propsHashCode();
+    return 31 * Objects.hash(name, namespace, types, messages) + 
propsHashCode();
   }
 
   /** Render this as <a href="https://json.org/";>JSON</a>. */

Reply via email to