package org.resthub.web.controller; import com.fasterxml.jackson.annotation.JsonView; import org.resthub.web.model.Book; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController @RequestMapping("/book") public class BookController { List<Book> data = new ArrayList<Book>(); public BookController() { data.add(new Book("Effective Java", "Joshua Bloch", "Essential", 1)); data.add(new Book("Breaking Dawn", "Stephanie Myers", "Just terrible", 2)); } @RequestMapping public List<Book> getBooks() { return data; } @RequestMapping(value = "summaries", params = "page=no") @JsonView(Book.SummaryView.class) public List<Book> getBookSummaries() { return data; } @RequestMapping("summaries") @JsonView(Book.SummaryView.class) public Page<Book> getBookSummariesPaginated(@RequestParam(value = "page", required = true, defaultValue = "1") Integer page) { return new PageImpl<Book>(data); } @RequestMapping("{id}/summary") @JsonView(Book.SummaryView.class) public Book getSummary(@PathVariable("id") Integer id) { return data.get(id - 1); } @RequestMapping("{id}") public Book getDetail(@PathVariable("id") Integer id) { return data.get(id - 1); } }