Our REST APIs are returning results in Pages. Here is an example of one Controller
@RequestMapping(value = \"/search\", method = RequestMethod.GET, produces
Solution in Kotlin
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonProperty
import com.fasterxml.jackson.databind.JsonNode
import org.springframework.data.domain.PageImpl
import org.springframework.data.domain.PageRequest
import org.springframework.data.domain.Pageable
import java.util.ArrayList
class RestResponsePage : PageImpl {
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
constructor(@JsonProperty("content") content: List,
@JsonProperty("number") number: Int,
@JsonProperty("size") size: Int,
@JsonProperty("totalElements") totalElements: Long?,
@JsonProperty("pageable") pageable: JsonNode,
@JsonProperty("last") last: Boolean,
@JsonProperty("totalPages") totalPages: Int,
@JsonProperty("sort") sort: JsonNode,
@JsonProperty("first") first: Boolean,
@JsonProperty("numberOfElements") numberOfElements: Int) : super(content, PageRequest.of(number, size), totalElements!!) {
}
constructor(content: List, pageable: Pageable, total: Long) : super(content, pageable, total) {}
constructor(content: List) : super(content) {}
constructor() : super(ArrayList()) {}
}
and request
var response: ResponseEntity<*> = restTemplate.getForEntity>(url)
Solution in Java
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.JsonNode;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import java.util.ArrayList;
import java.util.List;
public class RestResponsePage extends PageImpl {
@JsonCreator(mode = JsonCreator.Mode.PROPERTIES)
public RestResponsePage(@JsonProperty("content") List content,
@JsonProperty("number") int number,
@JsonProperty("size") int size,
@JsonProperty("totalElements") Long totalElements,
@JsonProperty("pageable") JsonNode pageable,
@JsonProperty("last") boolean last,
@JsonProperty("totalPages") int totalPages,
@JsonProperty("sort") JsonNode sort,
@JsonProperty("first") boolean first,
@JsonProperty("numberOfElements") int numberOfElements) {
super(content, PageRequest.of(number, size), totalElements);
}
public RestResponsePage(List content, Pageable pageable, long total) {
super(content, pageable, total);
}
public RestResponsePage(List content) {
super(content);
}
public RestResponsePage() {
super(new ArrayList<>());
}
}