if (calculationMethod != null && calculationMethod.size() == 1) {
if (!getCalculationMethod().equals(Iterables.getOnlyElement(calculationMethod))) {
return null;
}
}
final EquityIndexFutureOptionSecurity security = (EquityIndexFutureOptionSecurity) target.getSecurity();
final Set<String> discountingCurveNames = constraints.getValues(EquityOptionFunction.PROPERTY_DISCOUNTING_CURVE_NAME);
if (discountingCurveNames == null || discountingCurveNames.size() != 1) {
return null;
}
final Set<String> discountingCurveConfigs = constraints.getValues(EquityOptionFunction.PROPERTY_DISCOUNTING_CURVE_CONFIG);
if (discountingCurveConfigs == null || discountingCurveConfigs.size() != 1) {
return null;
}
final String discountingCurveName = Iterables.getOnlyElement(discountingCurveNames);
final String discountingCurveConfig = Iterables.getOnlyElement(discountingCurveConfigs);
final ValueRequirement discountingReq = getDiscountCurveRequirement(discountingCurveName, discountingCurveConfig, security);
final Set<String> surfaceNames = constraints.getValues(ValuePropertyNames.SURFACE);
if (surfaceNames == null || surfaceNames.size() != 1) {
return null;
}
final String volSurfaceName = Iterables.getOnlyElement(surfaceNames);
final Set<String> surfaceCalculationMethods = constraints.getValues(ValuePropertyNames.SURFACE_CALCULATION_METHOD);
if (surfaceCalculationMethods == null || surfaceCalculationMethods.size() != 1) {
return null;
}
final String surfaceCalculationMethod = Iterables.getOnlyElement(surfaceCalculationMethods);
final Set<String> forwardCurveNames = constraints.getValues(ForwardCurveValuePropertyNames.PROPERTY_FORWARD_CURVE_NAME);
if (forwardCurveNames == null || forwardCurveNames.size() != 1) {
return null;
}
final Set<String> forwardCurveCalculationMethods = constraints.getValues(ForwardCurveValuePropertyNames.PROPERTY_FORWARD_CURVE_CALCULATION_METHOD);
if (forwardCurveCalculationMethods == null || forwardCurveCalculationMethods.size() != 1) {
return null;
}
final ExternalIdBundle underlyingFutureId = ExternalIdBundle.of(security.getUnderlyingId());
final SecuritySource securitySource = OpenGammaCompilationContext.getSecuritySource(context);
final ExternalId underlyingIndexId;
Security underlyingFuture = securitySource.getSingle(underlyingFutureId);
if (underlyingFuture == null) {
throw new OpenGammaRuntimeException("The underlying (" + underlyingFutureId.toString() + ") of EquityIndexFutureOption (" + security.getName() +
") was not found in security source. Please try to reload.");
} else if (underlyingFuture instanceof EquityFutureSecurity) {
underlyingIndexId = ((EquityFutureSecurity) underlyingFuture).getUnderlyingId();
} else if (underlyingFuture instanceof IndexFutureSecurity) {
underlyingIndexId = ((IndexFutureSecurity) underlyingFuture).getUnderlyingId();