/** {@inheritDoc} */ @Override public Book findByIsbn(final String isbn) { BookPrimaryKey bookPrimaryKey = new BookPrimaryKey(isbn); BookKey bookKey = bookIndexCache.get( new ServiceContext<BookKey>() { public BookKey execute() { Book book = bookStorage.findByIsbn(isbn); if (book == null) { return null; } BookKey bookKey = new BookKey(book); exoBookCache.put(bookKey, new BookData(book)); return bookKey; } }, bookPrimaryKey); if (bookKey != null) { return findById(bookKey.getId()); } return null; }
/** * Build the book list from the caches Ids. * * @param data ids * @return books */ private List<Book> buildBooks(ListBooksData data) { List<Book> books = new ArrayList<Book>(); for (BookKey k : data.getIds()) { Book gotBook = findById(k.getId()); books.add(gotBook); } return books; }