@Override public void allocateNow(ResourceUser resourceUser, Set<TCSResource> resources) throws ResourceAllocationException { Objects.requireNonNull(resourceUser, "resourceUser is null"); Objects.requireNonNull(resources, "resources is null"); synchronized (reservations) { // Check if all resources are available. final Set<TCSResource> availableResources = new HashSet<>(); for (TCSResource curResource : resources) { ReservationEntry entry = getReservationEntry(curResource); if (!entry.isFree() && !entry.getResourceUser().equals(resourceUser)) { log.severe("Resource unavailable: " + curResource.getName()); // XXX DO something about it?! } else { availableResources.add(curResource); } } // Allocate all requested resources that are available. for (TCSResource curResource : availableResources) { getReservationEntry(curResource).allocate(resourceUser); } } }