spring-cloud/spring-cloud-gateway
GitHub で見るIdentical Routes are not considered equal: AsyncPredicate does not override equals()
Open
#3,236 opened on 2024年1月25日
bughelp wanted
Repository metrics
- Stars
- (4,284 stars)
- PR merge metrics
- (平均マージ 1d 21h) (30d で 18 merged PRs)
説明
Two logically equal Routes are not programmatically equal since Route's equals() compares predicates, and the AsyncPredicate class does not override equals() (hence you get a simple reference comparison). Here's a test that reproduces the issue:
class RouteEqualityTest {
@Test
void testTwoIdenticalRouteAreEqual() {
assertThat(getRouteBuilderStub().build()).isEqualTo(getRouteBuilderStub().build());
}
private Route.AsyncBuilder getRouteBuilderStub() {
return Route.async()
.id("123")
.uri("https://example.com")
.predicate(exchange -> exchange.getRequest()
.getPath()
.value()
.equals("/test-path"));
}
}