Skip to content

Commit 14c2ffe

Browse files
authored
feat: support equalsAndHashcode for BookieServerInfo (#4686)
* feat: support equalsAndHashcode for BookieServerInfo Signed-off-by: mattisonchao <[email protected]> * change order * fix checkstyle * fix checkstyle --------- Signed-off-by: mattisonchao <[email protected]>
1 parent ea7884a commit 14c2ffe

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

bookkeeper-server/src/main/java/org/apache/bookkeeper/discover/BookieServiceInfo.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Collections;
2121
import java.util.List;
2222
import java.util.Map;
23+
import java.util.Objects;
2324
import java.util.function.Supplier;
2425

2526
/**
@@ -150,6 +151,26 @@ public void setExtensions(List<String> extensions) {
150151
this.extensions = extensions;
151152
}
152153

154+
155+
@Override
156+
public boolean equals(Object o) {
157+
if (this == o) {
158+
return true;
159+
}
160+
if (!(o instanceof Endpoint)) {
161+
return false;
162+
}
163+
final Endpoint endpoint = (Endpoint) o;
164+
return port == endpoint.port && Objects.equals(id, endpoint.id) && Objects.equals(host, endpoint.host)
165+
&& Objects.equals(protocol, endpoint.protocol) && Objects.equals(auth, endpoint.auth)
166+
&& Objects.equals(extensions, endpoint.extensions);
167+
}
168+
169+
@Override
170+
public int hashCode() {
171+
return Objects.hash(id, port, host, protocol, auth, extensions);
172+
}
173+
153174
@Override
154175
public String toString() {
155176
return "EndpointInfo{" + "id=" + id + ", port=" + port + ", host=" + host + ", protocol=" + protocol + ", "
@@ -158,6 +179,23 @@ public String toString() {
158179

159180
}
160181

182+
@Override
183+
public boolean equals(Object o) {
184+
if (this == o) {
185+
return true;
186+
}
187+
if (!(o instanceof BookieServiceInfo)) {
188+
return false;
189+
}
190+
final BookieServiceInfo that = (BookieServiceInfo) o;
191+
return Objects.equals(properties, that.properties) && Objects.equals(endpoints, that.endpoints);
192+
}
193+
194+
@Override
195+
public int hashCode() {
196+
return Objects.hash(properties, endpoints);
197+
}
198+
161199
@Override
162200
public String toString() {
163201
return "BookieServiceInfo{" + "properties=" + properties + ", endpoints=" + endpoints + '}';

bookkeeper-server/src/test/java/org/apache/bookkeeper/discover/BookieServiceInfoTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,17 @@
2222
import static org.junit.Assert.assertEquals;
2323
import static org.junit.Assert.assertThat;
2424

25+
import com.fasterxml.jackson.databind.ObjectMapper;
26+
import com.google.common.collect.Lists;
27+
import com.google.common.collect.Maps;
2528
import java.util.Arrays;
2629
import java.util.Collections;
2730
import java.util.HashMap;
2831
import java.util.Map;
2932
import java.util.Objects;
3033
import org.apache.bookkeeper.discover.BookieServiceInfo.Endpoint;
3134
import org.apache.bookkeeper.net.BookieId;
35+
import org.junit.Assert;
3236
import org.junit.Test;
3337

3438
/**
@@ -90,4 +94,22 @@ private void assertBookieServiceInfoEquals(BookieServiceInfo expected, BookieSer
9094
assertEquals(expected.getProperties(), provided.getProperties());
9195
}
9296

97+
@Test
98+
public void testComparableBookieServerInfo() throws Exception {
99+
final BookieServiceInfo.Endpoint endpoint = new BookieServiceInfo.Endpoint(
100+
"http", 8080, "host1", "HTTP",
101+
Lists.newArrayList("auth1"), Lists.newArrayList("ext1")
102+
);
103+
final Map<String, String> properties1 = Maps.newHashMap();
104+
properties1.put("key", "value");
105+
final BookieServiceInfo info = new BookieServiceInfo(
106+
properties1,
107+
Lists.newArrayList(endpoint)
108+
);
109+
final ObjectMapper objectMapper = new ObjectMapper();
110+
final String bData = objectMapper.writeValueAsString(info);
111+
final BookieServiceInfo another = objectMapper.readValue(bData, BookieServiceInfo.class);
112+
Assert.assertEquals(info, another);
113+
}
114+
93115
}

0 commit comments

Comments
 (0)