spring-cloud/spring-cloud-gateway
Voir sur GitHubIdentical Routes are not considered equal: AsyncPredicate does not override equals()
Open
#3 236 ouverte le 25 janv. 2024
bughelp wanted
Métriques du dépôt
- Stars
- (4 284 stars)
- Métriques de merge PR
- (Merge moyen 1j 21h) (18 PRs mergées en 30 j)
Description
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"));
}
}