in invoker/core/src/main/java/com/google/cloud/functions/invoker/HttpFunctionExecutor.java [44:64]
public static HttpFunctionExecutor forClass(Class<?> functionClass) {
if (!HttpFunction.class.isAssignableFrom(functionClass)) {
throw new RuntimeException(
"Class "
+ functionClass.getName()
+ " does not implement "
+ HttpFunction.class.getName());
}
Class<? extends HttpFunction> httpFunctionClass = functionClass.asSubclass(HttpFunction.class);
ClassLoader oldContextLoader = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(httpFunctionClass.getClassLoader());
HttpFunction httpFunction = httpFunctionClass.getConstructor().newInstance();
return new HttpFunctionExecutor(httpFunction);
} catch (ReflectiveOperationException e) {
throw new RuntimeException(
"Could not construct an instance of " + functionClass.getName() + ": " + e, e);
} finally {
Thread.currentThread().setContextClassLoader(oldContextLoader);
}
}