Package com.jayway.demo.library.domain

Examples of com.jayway.demo.library.domain.Book


    @POST
    @Linkable(value = LinkableIds.BOOK_NEW_ID, templateClass = BookDto.class)
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response newBook(BookDto book) {
        Book newBook = bookRepository
                .newBook(book.getAuthor(), book.getTitle());
        return HateoasResponse
                .created(LinkableIds.BOOK_DETAILS_ID, newBook.getId())
                .entity(BookDto.fromBean(newBook)).build();
    }
View Full Code Here


    @GET
    @Linkable(LinkableIds.BOOK_DETAILS_ID)
    @Produces(MediaType.APPLICATION_JSON)
    public Response getBookById(@PathParam("id") Integer id) {
        Book book = bookRepository.getBookById(id);
        HateoasResponse.HateoasResponseBuilder builder = HateoasResponse
                .ok(BookDto.fromBean(book))
                .link(LinkableIds.BOOK_UPDATE_ID, AtomRels.SELF, id);

        if (!book.isBorrowed()) {
            builder.link(LinkableIds.LOAN_NEW_ID, Rels.LOANS);
        } else {
            builder.link(LinkableIds.LOAN_DETAILS_ID, Rels.LOAN, book.getId());
        }
        return builder.build();
    }
View Full Code Here

    @PUT
    @Linkable(value = LinkableIds.BOOK_UPDATE_ID, templateClass = BookDto.class)
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response updateBook(@PathParam("id") Integer id, BookDto updatedBook) {
        Book book = bookRepository.getBookById(id);
        book.setAuthor(updatedBook.getAuthor());
        book.setTitle(updatedBook.getTitle());

        return getBookById(id);
    }
View Full Code Here

    @POST
    @Consumes("application/vnd.demo.library.loan+json")
    @Produces("application/vnd.demo.library.loan+json")
    @Linkable(value = LinkableIds.LOAN_NEW_ID, templateClass = LoanDto.class)
    public Response newLoan(LoanDto loan) {
        Book book = bookRepository.getBookById(loan.getBookId());
        if (book.isBorrowed()) {
            return Response.status(Status.CONFLICT).build();
        }

        Customer customer = customerRepository.getById(loan.getCustomerId());
        book.setBorrowedBy(customer);

        return HateoasResponse
                .created(LinkableIds.LOAN_DETAILS_ID, book.getId())
                .entity(loan)
                .selfLink(LinkableIds.LOAN_DETAILS_ID, book.getId())
                .link(LinkableIds.BOOK_DETAILS_ID, Rels.BOOK, book.getId())
                .link(LinkableIds.CUSTOMER_DETAILS_ID, Rels.CUSTOMER, customer.getId())
                .selfLink(LinkableIds.LOAN_RETURN_ID, book.getId()).build();
    }
View Full Code Here

    @POST
    @Linkable(value = LinkableIds.BOOK_NEW_ID, templateClass = BookDto.class)
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response newBook(BookDto book) {
        Book newBook = bookRepository
                .newBook(book.getAuthor(), book.getTitle());
        return HateoasResponse
                .created(LinkableIds.BOOK_DETAILS_ID, newBook.getId())
                .entity(BookDto.fromBean(newBook)).build();
    }
View Full Code Here

    @GET
    @Linkable(LinkableIds.BOOK_DETAILS_ID)
    @Produces(MediaType.APPLICATION_JSON)
    public Response getBookById(@PathParam("id") Integer id) {
        Book book = bookRepository.getBookById(id);
        HateoasResponse.HateoasResponseBuilder builder = HateoasResponse
                .ok(BookDto.fromBean(book))
                .link(LinkableIds.BOOK_UPDATE_ID, AtomRels.SELF, id);

        if (!book.isBorrowed()) {
            builder.link(LinkableIds.LOAN_NEW_ID, Rels.LOANS);
        } else {
            builder.link(LinkableIds.LOAN_DETAILS_ID, Rels.LOAN, book.getId());
        }
        return builder.build();
    }
View Full Code Here

    @PUT
    @Linkable(value = LinkableIds.BOOK_UPDATE_ID, templateClass = BookDto.class)
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response updateBook(@PathParam("id") Integer id, BookDto updatedBook) {
        Book book = bookRepository.getBookById(id);
        book.setAuthor(updatedBook.getAuthor());
        book.setTitle(updatedBook.getTitle());

        return getBookById(id);
    }
View Full Code Here

    private final AtomicInteger nextId = new AtomicInteger();

    @Override
    public Book newBook(String author, String title) {
        int id = nextId.getAndIncrement();
        Book book = new Book(id, author, title);
        allBooks.put(id, book);
        return book;
    }
View Full Code Here

     @POST
     @Consumes("application/vnd.demo.library.book+json")
     @Produces("application/vnd.demo.library.book+json")
     public Response newBook(BookDto book, @Context UriInfo uriInfo) {
       Book newBook = bookRepository
           .newBook(book.getAuthor(), book.getTitle());

       URI bookUri = uriInfo.getAbsolutePathBuilder()
           .path(BookResource.class, "getBookById")
           .build(newBook.getId());
       return Response.created(bookUri).entity(BookDto.fromBean(newBook))
           .build();
     }
View Full Code Here

  @POST
  @Consumes("application/vnd.demo.library.book+json")
  @Produces("application/vnd.demo.library.book+json")
  public Response newBook(BookDto book, @Context UriInfo uriInfo) {
    Book newBook = bookRepository
        .newBook(book.getAuthor(), book.getTitle());

    URI bookUri = uriInfo.getAbsolutePathBuilder()
        .path(PlainBookResource.class, "getBookById")
        .build(newBook.getId());
    return Response.created(bookUri).entity(BookDto.fromBean(newBook))
        .build();
  }
View Full Code Here

TOP

Related Classes of com.jayway.demo.library.domain.Book

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.