From 0643624e7cd22aa065a9359abf383b7607428706 Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Mon, 19 Oct 2020 12:01:17 +0200 Subject: [PATCH] #1379 - Test cases to show that what's described is generally working. --- .../RepresentationModelProcessorInvoker.java | 1 - ...ntationModelProcessorInvokerUnitTests.java | 36 +++++++++++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvoker.java b/src/main/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvoker.java index f85316b1..ecd7603f 100644 --- a/src/main/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvoker.java +++ b/src/main/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvoker.java @@ -383,7 +383,6 @@ public class RepresentationModelProcessorInvoker { * @param target that target {@link ResolvableType}. * @return */ - static boolean isValueTypeMatch(@Nullable CollectionModel collectionModel, ResolvableType target) { if (collectionModel == null) { diff --git a/src/test/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvokerUnitTests.java b/src/test/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvokerUnitTests.java index ba0a84ac..332e742f 100644 --- a/src/test/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvokerUnitTests.java +++ b/src/test/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvokerUnitTests.java @@ -15,12 +15,12 @@ */ package org.springframework.hateoas.server.mvc; +import static java.util.Collections.*; import static org.assertj.core.api.Assertions.*; -import java.util.Collections; - import org.junit.jupiter.api.Test; import org.springframework.hateoas.CollectionModel; +import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.RepresentationModel; import org.springframework.hateoas.server.RepresentationModelProcessor; @@ -35,12 +35,25 @@ public class RepresentationModelProcessorInvokerUnitTests { void doesNotInvokeGenericProcessorForCollectionModel() { RepresentationModelProcessorInvoker invoker = new RepresentationModelProcessorInvoker( - Collections.singletonList(new GenericPostProcessor<>())); + singletonList(new GenericPostProcessor<>())); assertThatCode(() -> invoker.invokeProcessorsFor(CollectionModel.empty())) // .doesNotThrowAnyException(); } + @Test // #1379 + void doesNotInvokeProcessorForNonAssignableNestedEntity() { + + FirstEntityProcessor processor = new FirstEntityProcessor(); + RepresentationModelProcessorInvoker invoker = new RepresentationModelProcessorInvoker( + singletonList(processor)); + + EntityModel entityModel = EntityModel.of(new SecondEntity()); + invoker.invokeProcessorsFor(CollectionModel.of(singleton(entityModel))); + + assertThat(processor.invoked).isFalse(); + } + // #1280 static class GenericPostProcessor> implements RepresentationModelProcessor { @@ -52,4 +65,21 @@ public class RepresentationModelProcessorInvokerUnitTests { } static class GenericModel> extends RepresentationModel {} + + static class FirstEntity {} + + static class SecondEntity {}; + + static class FirstEntityProcessor implements RepresentationModelProcessor>> { + + boolean invoked = false; + + @Override + public CollectionModel> process(CollectionModel> model) { + + invoked = true; + + return model; + } + } }