Java Reference
In-Depth Information
public class GenerateSeatRequestsFromDatabase implements
Callable<List<Integer>> {
private static final int SEATS_TO_RETURN = 3;
@Inject
private SeatDao dao; // [1]
@Inject
private Logger logger;
@Override
public List<Integer> call() throws Exception {
logger.info("Sleeping...");
Thread.sleep(5000); // [4]
logger.info("Finished sleeping!");
List<Seat> databaseSeats = dao.findAll(); // [2]
List<Integer> freeSeats = databaseSeats.stream()
.filter(seat -> !seat.getBooked())
.limit(SEATS_TO_RETURN)
.map(seat -> seat.getId().intValue())
.collect(Collectors.toList()); // [3]
if (freeSeats.isEmpty()) {
logger.info("No seats to book");
} else {
logger.info("Requesting booking for " +
freeSeats);
}
return freeSeats;
}
}
The main difference between this task and the previous one is that we injected an EJB
[1] , which will start an underlying transaction. In the call method, a database request
is issued [2] . The returned list of seats is then filtered and transformed into a list of IDs
[3] .
Search WWH ::




Custom Search