in src/main/java/com/microsoft/azure/functions/worker/broker/ParameterResolver.java [30:65]
private static InvokeInfoBuilder resolve(ExecutionContextDataSource executionContextDataSource) {
try {
MethodBindInfo method = executionContextDataSource.getMethodBindInfo();
BindingDataStore dataStore = executionContextDataSource.getDataStore();
final InvokeInfoBuilder invokeInfo = new InvokeInfoBuilder(method);
for (ParamBindInfo param : method.getParams()) {
String paramName = param.getName();
Type paramType = param.getType();
String paramBindingNameAnnotation = param.getBindingNameAnnotation();
Optional<BindingData> argument;
if (OutputBinding.class.isAssignableFrom(TypeUtils.getRawType(paramType, null))) {
argument = dataStore.getOrAddDataTarget(invokeInfo.getOutputsId(), paramName, paramType, false);
}
else if (paramName != null && !paramName.isEmpty()) {
argument = executionContextDataSource.getBindingData(paramName, paramType);
}
else if (paramName == null && !paramBindingNameAnnotation.isEmpty()) {
argument = dataStore.getTriggerMetatDataByName(paramBindingNameAnnotation, paramType);
}
else {
argument = dataStore.getDataByType(paramType);
}
BindingData actualArg = argument.orElseThrow(WrongMethodTypeException::new);
invokeInfo.appendArgument(actualArg.getValue());
}
if (method.hasEffectiveReturnType()){
dataStore.getOrAddDataTarget(invokeInfo.getOutputsId(), BindingDataStore.RETURN_NAME, method.getMethod().getReturnType(), true);
}
return invokeInfo;
} catch (Exception ex) {
ExceptionUtils.rethrow(ex);
return null;
}
}