/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.function;
import java.util.Set;
import com.google.common.collect.Sets;
import com.opengamma.engine.ComputationTarget;
import com.opengamma.engine.cache.MissingOutput;
import com.opengamma.engine.value.ComputedValue;
import com.opengamma.engine.value.ValueRequirement;
import com.opengamma.engine.value.ValueSpecification;
/**
* A no-op function. This will never be selected during graph construction, but can be present in an execution plan as a placeholder for a suppressed function.
* <p>
* This should be present in all function repositories with its preferred identifier.
*/
public final class NoOpFunction extends IntrinsicFunction {
/**
* Shared instance.
*/
public static final NoOpFunction INSTANCE = new NoOpFunction();
/**
* Preferred identifier this function will be available in a repository as.
*/
public static final String UNIQUE_ID = "No-op";
public NoOpFunction() {
super(UNIQUE_ID);
}
// FunctionInvoker
@Override
public Set<ComputedValue> execute(final FunctionExecutionContext executionContext, final FunctionInputs inputs, final ComputationTarget target, final Set<ValueRequirement> desiredValues) {
final Set<ComputedValue> result = Sets.newHashSetWithExpectedSize(desiredValues.size());
for (ValueRequirement desiredValue : desiredValues) {
result.add(new ComputedValue(new ValueSpecification(desiredValue.getValueName(), target.toSpecification(), desiredValue.getConstraints()), MissingOutput.SUPPRESSED));
}
return result;
}
}