spring-cloud/spring-cloud-gateway
Identical Routes are not considered equal: AsyncPredicate does not override equals()
Aberta
#3.236 aberto em 25 de jan. de 2024
bughelp wanted
Métricas do repositório
- Stars
- (4.284 estrelas)
- Métricas de merge de PR
- (Mesclagem média 1d 21h) (18 fundiu PRs em 30d)
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"));
}
}