/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.depgraph;
import java.util.Set;
import com.opengamma.engine.value.ValueSpecification;
/**
* Possible solution to the resolution of a value requirement.
*/
/* package */final class ResolvedValue {
private final ValueSpecification _valueSpecification;
private final DependencyNodeFunction _function;
private final Set<ValueSpecification> _functionInputs;
private final Set<ValueSpecification> _functionOutputs;
/**
* Creates a new instance.
* <p>
* The {@code valueSpecification} specification must be a normalized/canonical form.
*
* @param valueSpecification the resolved value specification, as it will appear in the dependency graph, not null
* @param function the function identifier and parameters, not null
* @param functionInputs the resolved input specifications, as they will appear in the dependency graph, not null
* @param functionOutputs the resolved output specifications, as they will appear in the dependency graph, not null
*/
public ResolvedValue(final ValueSpecification valueSpecification, final DependencyNodeFunction function, final Set<ValueSpecification> functionInputs,
final Set<ValueSpecification> functionOutputs) {
assert valueSpecification != null;
assert function != null;
assert functionInputs != null;
assert functionOutputs != null;
assert functionOutputs.contains(valueSpecification);
assert !functionInputs.contains(valueSpecification);
_valueSpecification = valueSpecification;
_function = function;
_functionInputs = functionInputs;
_functionOutputs = functionOutputs;
}
public ValueSpecification getValueSpecification() {
return _valueSpecification;
}
public DependencyNodeFunction getFunction() {
return _function;
}
public Set<ValueSpecification> getFunctionInputs() {
return _functionInputs;
}
public Set<ValueSpecification> getFunctionOutputs() {
return _functionOutputs;
}
@Override
public String toString() {
return _valueSpecification + " from " + _function + "(" + _functionInputs + ")";
}
}