|
|
|
|
@ -39,6 +39,7 @@ import org.springframework.hateoas.UriTemplate;
@@ -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<T>
@@ -100,6 +101,7 @@ public class SlicedResourcesAssembler<T>
|
|
|
|
|
* @return will never be {@literal null}. |
|
|
|
|
* @since 3.1 |
|
|
|
|
*/ |
|
|
|
|
@CheckReturnValue |
|
|
|
|
public SlicedResourcesAssembler<T> withParameter(@Nullable MethodParameter parameter) { |
|
|
|
|
return new SlicedResourcesAssembler<>(pageableResolver, baseUri, parameter); |
|
|
|
|
} |
|
|
|
|
@ -116,7 +118,7 @@ public class SlicedResourcesAssembler<T>
@@ -116,7 +118,7 @@ public class SlicedResourcesAssembler<T>
|
|
|
|
|
* |
|
|
|
|
* @param slice must not be {@literal null}. |
|
|
|
|
* @param selfLink must not be {@literal null}. |
|
|
|
|
* @return |
|
|
|
|
* @return a {@link SlicedModel}. |
|
|
|
|
*/ |
|
|
|
|
public SlicedModel<EntityModel<T>> toModel(Slice<T> slice, Link selfLink) { |
|
|
|
|
return toModel(slice, EntityModel::of, selfLink); |
|
|
|
|
@ -128,7 +130,7 @@ public class SlicedResourcesAssembler<T>
@@ -128,7 +130,7 @@ public class SlicedResourcesAssembler<T>
|
|
|
|
|
* |
|
|
|
|
* @param slice must not be {@literal null}. |
|
|
|
|
* @param assembler must not be {@literal null}. |
|
|
|
|
* @return |
|
|
|
|
* @return a {@link SlicedModel}. |
|
|
|
|
*/ |
|
|
|
|
public <R extends RepresentationModel<?>> SlicedModel<R> toModel(Slice<T> slice, |
|
|
|
|
RepresentationModelAssembler<T, R> assembler) { |
|
|
|
|
@ -143,11 +145,13 @@ public class SlicedResourcesAssembler<T>
@@ -143,11 +145,13 @@ public class SlicedResourcesAssembler<T>
|
|
|
|
|
* @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 <R extends RepresentationModel<?>> SlicedModel<R> toModel(Slice<T> slice, |
|
|
|
|
RepresentationModelAssembler<T, R> assembler, Link link) { |
|
|
|
|
|
|
|
|
|
Assert.notNull(link, "Link must not be null"); |
|
|
|
|
|
|
|
|
|
return createModel(slice, assembler, link); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -156,7 +160,7 @@ public class SlicedResourcesAssembler<T>
@@ -156,7 +160,7 @@ public class SlicedResourcesAssembler<T>
|
|
|
|
|
* |
|
|
|
|
* @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<T>
@@ -168,7 +172,7 @@ public class SlicedResourcesAssembler<T>
|
|
|
|
|
* @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<T>
@@ -187,7 +191,6 @@ public class SlicedResourcesAssembler<T>
|
|
|
|
|
|
|
|
|
|
@Deprecated |
|
|
|
|
public SlicedModel<?> toEmptyModel(Slice<?> slice, Class<?> type, Optional<Link> link) { |
|
|
|
|
Assert.notNull(link, "Link must not be null"); |
|
|
|
|
return toEmptyModel(slice, type, link.orElse(null)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -201,6 +204,7 @@ public class SlicedResourcesAssembler<T>
@@ -201,6 +204,7 @@ public class SlicedResourcesAssembler<T>
|
|
|
|
|
*/ |
|
|
|
|
protected <R extends RepresentationModel<?>, S> SlicedModel<R> createSlicedModel(List<R> resources, |
|
|
|
|
SliceMetadata metadata, Slice<S> 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<T>
@@ -210,6 +214,7 @@ public class SlicedResourcesAssembler<T>
|
|
|
|
|
|
|
|
|
|
private <S, R extends RepresentationModel<?>> SlicedModel<R> createModel(Slice<S> slice, |
|
|
|
|
RepresentationModelAssembler<S, R> 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<T>
@@ -227,7 +232,6 @@ public class SlicedResourcesAssembler<T>
|
|
|
|
|
private <R> SlicedModel<R> addPaginationLinks(SlicedModel<R> resources, Slice<?> slice, @Nullable Link link) { |
|
|
|
|
|
|
|
|
|
UriTemplate base = getUriTemplate(link); |
|
|
|
|
|
|
|
|
|
boolean isNavigable = slice.hasPrevious() || slice.hasNext(); |
|
|
|
|
|
|
|
|
|
if (isNavigable || forceFirstRel) { |
|
|
|
|
|