spring-cloud/spring-cloud-gateway
Auf GitHub ansehenIdentical Routes are not considered equal: AsyncPredicate does not override equals()
Open
#3.236 geöffnet am 25. Jan. 2024
bughelp wanted
Repository-Metriken
- Stars
- (4.284 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 1T 21h) (18 gemergte PRs in 30 T)
Beschreibung
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"));
}
}