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(); | ||||
|         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