#1796 - Relax generics bound in ReactiveRepresentationModelAssembler.

We now relax the generic bound of D to … extends RepresentationModel<?> as otherwise implementation code of, for example, toModel(…) has to produce a concrete representation model and cannot be typed to return RepresentationModel<?>.
This commit is contained in:
Oliver Drotbohm
2022-05-31 12:26:19 +02:00
parent 3730a6f270
commit 2de450531b
2 changed files with 15 additions and 2 deletions

View File

@@ -30,7 +30,7 @@ import org.springframework.web.server.ServerWebExchange;
* @author Greg Turnquist
* @author Oliver Drotbohm
*/
public interface ReactiveRepresentationModelAssembler<T, D extends RepresentationModel<D>> {
public interface ReactiveRepresentationModelAssembler<T, D extends RepresentationModel<?>> {
/**
* Converts the given entity into a {@code D}, which extends {@link RepresentationModel}.

View File

@@ -21,7 +21,6 @@ import static org.mockito.Mockito.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.test.StepVerifier;
@@ -162,4 +161,18 @@ class ReactiveResourceAssemblerUnitTest {
class EmployeeResource extends RepresentationModel<EmployeeResource> {
private Employee employee;
}
// #1797 - Just to check that the implementation can be declared like that
class GenericAssembler implements ReactiveRepresentationModelAssembler<Employee, RepresentationModel<?>> {
/*
* (non-Javadoc)
* @see org.springframework.hateoas.server.reactive.ReactiveRepresentationModelAssembler#toModel(java.lang.Object, org.springframework.web.server.ServerWebExchange)
*/
@Override
public Mono<RepresentationModel<?>> toModel(Employee entity, ServerWebExchange exchange) {
return Mono.just(RepresentationModel.of(entity));
}
}
}