/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.test; import java.util.Collections; import java.util.Set; import com.opengamma.engine.ComputationTarget; import com.opengamma.engine.function.AbstractFunction; import com.opengamma.engine.function.FunctionCompilationContext; import com.opengamma.engine.function.FunctionInvoker; import com.opengamma.engine.target.ComputationTargetType; import com.opengamma.engine.value.ValueRequirement; import com.opengamma.engine.value.ValueSpecification; import com.opengamma.id.UniqueId; import com.opengamma.util.ArgumentChecker; /** * A function for primitive testing. */ public class PrimitiveTestFunction extends AbstractFunction.NonCompiled { /** * The requirement name. */ private final String _requirementName; /** * The function invoker. */ private FunctionInvoker _functionInvoker; /** * Creates an instance. * * @param requirementName the name, not null */ public PrimitiveTestFunction(String requirementName) { ArgumentChecker.notNull(requirementName, "Requirement name"); _requirementName = requirementName; } //------------------------------------------------------------------------- @Override public boolean canApplyTo(FunctionCompilationContext context, ComputationTarget target) { assert ComputationTargetType.PRIMITIVE.isCompatible(target.getType()); return true; } @Override public Set<ValueRequirement> getRequirements(FunctionCompilationContext context, ComputationTarget target, final ValueRequirement desiredValue) { ValueRequirement requirement = new ValueRequirement(_requirementName, ComputationTargetType.PRIMITIVE, UniqueId.of("foo", "bar")); return Collections.singleton(requirement); } @Override public Set<ValueSpecification> getResults(FunctionCompilationContext context, ComputationTarget target) { ValueSpecification specification = new ValueSpecification(_requirementName, target.toSpecification(), createValueProperties().get()); return Collections.singleton(specification); } @Override public String getShortName() { return "PrimitiveTestFunction for " + _requirementName; } @Override public ComputationTargetType getTargetType() { return ComputationTargetType.PRIMITIVE; } public void setFunctionInvoker(final FunctionInvoker functionInvoker) { _functionInvoker = functionInvoker; } @Override public FunctionInvoker getFunctionInvoker() { return _functionInvoker; } }