From 2de450531b86833f7c040f50aae592695236ec07 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Tue, 31 May 2022 12:26:19 +0200 Subject: [PATCH] #1796 - Relax generics bound in ReactiveRepresentationModelAssembler. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- .../ReactiveRepresentationModelAssembler.java | 2 +- .../ReactiveResourceAssemblerUnitTest.java | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/server/reactive/ReactiveRepresentationModelAssembler.java b/src/main/java/org/springframework/hateoas/server/reactive/ReactiveRepresentationModelAssembler.java index 5b962bf5..399f7bac 100644 --- a/src/main/java/org/springframework/hateoas/server/reactive/ReactiveRepresentationModelAssembler.java +++ b/src/main/java/org/springframework/hateoas/server/reactive/ReactiveRepresentationModelAssembler.java @@ -30,7 +30,7 @@ import org.springframework.web.server.ServerWebExchange; * @author Greg Turnquist * @author Oliver Drotbohm */ -public interface ReactiveRepresentationModelAssembler> { +public interface ReactiveRepresentationModelAssembler> { /** * Converts the given entity into a {@code D}, which extends {@link RepresentationModel}. diff --git a/src/test/java/org/springframework/hateoas/server/reactive/ReactiveResourceAssemblerUnitTest.java b/src/test/java/org/springframework/hateoas/server/reactive/ReactiveResourceAssemblerUnitTest.java index afa61d7d..936ae661 100644 --- a/src/test/java/org/springframework/hateoas/server/reactive/ReactiveResourceAssemblerUnitTest.java +++ b/src/test/java/org/springframework/hateoas/server/reactive/ReactiveResourceAssemblerUnitTest.java @@ -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 { private Employee employee; } + + // #1797 - Just to check that the implementation can be declared like that + + class GenericAssembler implements ReactiveRepresentationModelAssembler> { + + /* + * (non-Javadoc) + * @see org.springframework.hateoas.server.reactive.ReactiveRepresentationModelAssembler#toModel(java.lang.Object, org.springframework.web.server.ServerWebExchange) + */ + @Override + public Mono> toModel(Employee entity, ServerWebExchange exchange) { + return Mono.just(RepresentationModel.of(entity)); + } + } }