diff --git a/src/main/java/org/springframework/data/web/SlicedResourcesAssembler.java b/src/main/java/org/springframework/data/web/SlicedResourcesAssembler.java index a647ff130..10b3bbb2b 100644 --- a/src/main/java/org/springframework/data/web/SlicedResourcesAssembler.java +++ b/src/main/java/org/springframework/data/web/SlicedResourcesAssembler.java @@ -39,6 +39,7 @@ import org.springframework.hateoas.UriTemplate; import org.springframework.hateoas.server.RepresentationModelAssembler; import org.springframework.hateoas.server.core.EmbeddedWrapper; import org.springframework.hateoas.server.core.EmbeddedWrappers; +import org.springframework.lang.CheckReturnValue; import org.springframework.util.Assert; import org.springframework.web.servlet.support.ServletUriComponentsBuilder; import org.springframework.web.util.UriComponents; @@ -100,6 +101,7 @@ public class SlicedResourcesAssembler * @return will never be {@literal null}. * @since 3.1 */ + @CheckReturnValue public SlicedResourcesAssembler withParameter(@Nullable MethodParameter parameter) { return new SlicedResourcesAssembler<>(pageableResolver, baseUri, parameter); } @@ -116,7 +118,7 @@ public class SlicedResourcesAssembler * * @param slice must not be {@literal null}. * @param selfLink must not be {@literal null}. - * @return + * @return a {@link SlicedModel}. */ public SlicedModel> toModel(Slice slice, Link selfLink) { return toModel(slice, EntityModel::of, selfLink); @@ -128,7 +130,7 @@ public class SlicedResourcesAssembler * * @param slice must not be {@literal null}. * @param assembler must not be {@literal null}. - * @return + * @return a {@link SlicedModel}. */ public > SlicedModel toModel(Slice slice, RepresentationModelAssembler assembler) { @@ -143,11 +145,13 @@ public class SlicedResourcesAssembler * @param slice must not be {@literal null}. * @param assembler must not be {@literal null}. * @param link must not be {@literal null}. - * @return a {@link SlicedModel} must not be {@literal null}. + * @return a {@link SlicedModel}. */ public > SlicedModel toModel(Slice slice, RepresentationModelAssembler assembler, Link link) { + Assert.notNull(link, "Link must not be null"); + return createModel(slice, assembler, link); } @@ -156,7 +160,7 @@ public class SlicedResourcesAssembler * * @param slice must not be {@literal null}, content must be empty. * @param type must not be {@literal null}. - * @return + * @return an empty {@link SlicedModel}. */ public SlicedModel toEmptyModel(Slice slice, Class type) { return toEmptyModel(slice, type, (Link) null); @@ -168,7 +172,7 @@ public class SlicedResourcesAssembler * @param slice must not be {@literal null}, content must be empty. * @param type must not be {@literal null}. * @param link can be {@literal null}. - * @return a {@link SlicedModel} must not be {@literal null}. + * @return an empty {@link SlicedModel}. */ public SlicedModel toEmptyModel(Slice slice, Class type, @Nullable Link link) { @@ -187,7 +191,6 @@ public class SlicedResourcesAssembler @Deprecated public SlicedModel toEmptyModel(Slice slice, Class type, Optional link) { - Assert.notNull(link, "Link must not be null"); return toEmptyModel(slice, type, link.orElse(null)); } @@ -201,6 +204,7 @@ public class SlicedResourcesAssembler */ protected , S> SlicedModel createSlicedModel(List resources, SliceMetadata metadata, Slice slice) { + Assert.notNull(resources, "Content resources must not be null"); Assert.notNull(metadata, "SliceMetadata must not be null"); Assert.notNull(slice, "Slice must not be null"); @@ -210,6 +214,7 @@ public class SlicedResourcesAssembler private > SlicedModel createModel(Slice slice, RepresentationModelAssembler assembler, @Nullable Link link) { + Assert.notNull(slice, "Slice must not be null"); Assert.notNull(assembler, "ResourceAssembler must not be null"); @@ -227,7 +232,6 @@ public class SlicedResourcesAssembler private SlicedModel addPaginationLinks(SlicedModel resources, Slice slice, @Nullable Link link) { UriTemplate base = getUriTemplate(link); - boolean isNavigable = slice.hasPrevious() || slice.hasNext(); if (isNavigable || forceFirstRel) { diff --git a/src/test/java/org/springframework/data/web/SlicedResourcesAssemblerUnitTest.java b/src/test/java/org/springframework/data/web/SlicedResourcesAssemblerUnitTest.java index acd7570e1..23ba1c6ac 100644 --- a/src/test/java/org/springframework/data/web/SlicedResourcesAssemblerUnitTest.java +++ b/src/test/java/org/springframework/data/web/SlicedResourcesAssemblerUnitTest.java @@ -22,10 +22,11 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; - import java.util.Optional; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; + import org.springframework.data.domain.AbstractPageRequest; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -46,7 +47,6 @@ import org.springframework.web.util.UriComponentsBuilder; * * @author Michael Schout * @author Oliver Drotbohm - * @since 3.1 */ class SlicedResourcesAssemblerUnitTest {