mirror of https://github.com/apache/kafka.git
				
				
				
			KAFKA-1805; ProducerRecord should implement equals and hashCode; reviewed by Guozhang Wang
This commit is contained in:
		
							parent
							
								
									eab4f4c9f4
								
							
						
					
					
						commit
						5b949c7b1a
					
				|  | @ -99,4 +99,28 @@ public final class ProducerRecord<K, V> { | ||||||
|         String value = this.value == null ? "null" : this.value.toString(); |         String value = this.value == null ? "null" : this.value.toString(); | ||||||
|         return "ProducerRecord(topic=" + topic + ", partition=" + partition + ", key=" + key + ", value=" + value; |         return "ProducerRecord(topic=" + topic + ", partition=" + partition + ", key=" + key + ", value=" + value; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public boolean equals(Object o) { | ||||||
|  |         if (this == o) return true; | ||||||
|  |         if (!(o instanceof ProducerRecord)) return false; | ||||||
|  | 
 | ||||||
|  |         ProducerRecord that = (ProducerRecord) o; | ||||||
|  | 
 | ||||||
|  |         if (key != null ? !key.equals(that.key) : that.key != null) return false; | ||||||
|  |         if (partition != null ? !partition.equals(that.partition) : that.partition != null) return false; | ||||||
|  |         if (topic != null ? !topic.equals(that.topic) : that.topic != null) return false; | ||||||
|  |         if (value != null ? !value.equals(that.value) : that.value != null) return false; | ||||||
|  | 
 | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     @Override | ||||||
|  |     public int hashCode() { | ||||||
|  |         int result = topic != null ? topic.hashCode() : 0; | ||||||
|  |         result = 31 * result + (partition != null ? partition.hashCode() : 0); | ||||||
|  |         result = 31 * result + (key != null ? key.hashCode() : 0); | ||||||
|  |         result = 31 * result + (value != null ? value.hashCode() : 0); | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,52 @@ | ||||||
|  | /** | ||||||
|  |  * Licensed to the Apache Software Foundation (ASF) under one or more | ||||||
|  |  * contributor license agreements.  See the NOTICE file distributed with | ||||||
|  |  * this work for additional information regarding copyright ownership. | ||||||
|  |  * The ASF licenses this file to You under the Apache License, Version 2.0 | ||||||
|  |  * (the "License"); you may not use this file except in compliance with | ||||||
|  |  * the License.  You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *    http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  | package org.apache.kafka.clients.producer; | ||||||
|  | 
 | ||||||
|  | import org.junit.Test; | ||||||
|  | 
 | ||||||
|  | import static org.junit.Assert.assertEquals; | ||||||
|  | import static org.junit.Assert.assertFalse; | ||||||
|  | 
 | ||||||
|  | public class ProducerRecordTest { | ||||||
|  | 
 | ||||||
|  |     @Test | ||||||
|  |     public void testEqualsAndHashCode() { | ||||||
|  |         ProducerRecord<String, Integer> producerRecord = new ProducerRecord<String, Integer>("test", 1 , "key", 1); | ||||||
|  |         assertEquals(producerRecord, producerRecord); | ||||||
|  |         assertEquals(producerRecord.hashCode(), producerRecord.hashCode()); | ||||||
|  | 
 | ||||||
|  |         ProducerRecord<String, Integer> equalRecord = new ProducerRecord<String, Integer>("test", 1 , "key", 1); | ||||||
|  |         assertEquals(producerRecord, equalRecord); | ||||||
|  |         assertEquals(producerRecord.hashCode(), equalRecord.hashCode()); | ||||||
|  | 
 | ||||||
|  |         ProducerRecord<String, Integer> topicMisMatch = new ProducerRecord<String, Integer>("test-1", 1 , "key", 1); | ||||||
|  |         assertFalse(producerRecord.equals(topicMisMatch)); | ||||||
|  | 
 | ||||||
|  |         ProducerRecord<String, Integer> partitionMismatch = new ProducerRecord<String, Integer>("test", 2 , "key", 1); | ||||||
|  |         assertFalse(producerRecord.equals(partitionMismatch)); | ||||||
|  | 
 | ||||||
|  |         ProducerRecord<String, Integer> keyMisMatch = new ProducerRecord<String, Integer>("test", 1 , "key-1", 1); | ||||||
|  |         assertFalse(producerRecord.equals(keyMisMatch)); | ||||||
|  | 
 | ||||||
|  |         ProducerRecord<String, Integer> valueMisMatch = new ProducerRecord<String, Integer>("test", 1 , "key", 2); | ||||||
|  |         assertFalse(producerRecord.equals(valueMisMatch)); | ||||||
|  | 
 | ||||||
|  |         ProducerRecord<String, Integer> nullFieldsRecord = new ProducerRecord<String, Integer>("topic", null, null, null); | ||||||
|  |         assertEquals(nullFieldsRecord, nullFieldsRecord); | ||||||
|  |         assertEquals(nullFieldsRecord.hashCode(), nullFieldsRecord.hashCode()); | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue