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 ecd7603f..c105dde0 100644 --- a/src/main/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvoker.java +++ b/src/main/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvoker.java @@ -429,6 +429,7 @@ public class RepresentationModelProcessorInvoker { * @param superType must not be {@literal null}. * @return */ + @Nullable private static ResolvableType getSuperType(ResolvableType source, Class superType) { Class rawType = source.getRawClass(); @@ -449,7 +450,7 @@ public class RepresentationModelProcessorInvoker { } } - return ResolvableType.forClass(superType); + return 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 332e742f..d2d17c98 100644 --- a/src/test/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvokerUnitTests.java +++ b/src/test/java/org/springframework/hateoas/server/mvc/RepresentationModelProcessorInvokerUnitTests.java @@ -28,6 +28,7 @@ import org.springframework.hateoas.server.RepresentationModelProcessor; * Unit tests for {@link RepresentationModelProcessorInvoker}. * * @author Oliver Drotbohm + * @author Karina Pleskach */ public class RepresentationModelProcessorInvokerUnitTests { @@ -54,6 +55,20 @@ public class RepresentationModelProcessorInvokerUnitTests { assertThat(processor.invoked).isFalse(); } + @Test // #1379 + void doesNotInvokeProcessorForNonAssignableNestedEntityOnSpecializedCollectionModel() { + + FirstEntityProcessor firstProcessor = new FirstEntityProcessor(); + + RepresentationModelProcessorInvoker invoker = new RepresentationModelProcessorInvoker( + singletonList(firstProcessor)); + + EntityModel entityModel = EntityModel.of(new SecondEntity()); + invoker.invokeProcessorsFor(new MyCollectionModelInheritor<>(singletonList(entityModel))); + + assertThat(firstProcessor.invoked).isFalse(); + } + // #1280 static class GenericPostProcessor> implements RepresentationModelProcessor { @@ -82,4 +97,10 @@ public class RepresentationModelProcessorInvokerUnitTests { return model; } } + + static class MyCollectionModelInheritor extends CollectionModel { + public MyCollectionModelInheritor(Iterable content) { + super(content); + } + } }