/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.calcnode;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import com.opengamma.util.ArgumentChecker;
/**
* Specifies the capability requirements of a job. It will only be passed to invokers that can
* satisfy these requirements.
*/
public class CapabilityRequirements {
private final Set<Capability> _requiredCapabilities = new HashSet<Capability>();
public CapabilityRequirements() {
}
protected CapabilityRequirements(final CapabilityRequirements clone) {
_requiredCapabilities.addAll(clone._requiredCapabilities);
}
public void requireCapability(final Capability capability) {
ArgumentChecker.notNull(capability, "capability");
_requiredCapabilities.add(capability);
}
public void requireCapabilities(final Collection<Capability> capabilities) {
ArgumentChecker.notNull(capabilities, "capabilities");
_requiredCapabilities.addAll(capabilities);
}
protected Set<Capability> getRequiredCapabilities() {
return _requiredCapabilities;
}
public CapabilityRequirements clone() {
return new CapabilityRequirements(this);
}
public boolean satisfiedBy(final Collection<Capability> capabilities) {
// TODO [ENG-42] Match up our requirements with the exported capabilities of the invoker
return true;
}
}