Ejemplo n.º 1
0
  @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);
      }
    }
  }