| 88 | } |
| 89 | |
| 90 | public static Functions load(Settings settings, |
| 91 | SessionSettingRegistry sessionSettingRegistry, |
| 92 | ClassLoader ... classLoaders) { |
| 93 | Builder builder = new Builder(); |
| 94 | CompositeClassLoader compositeLoader = new CompositeClassLoader( |
| 95 | FunctionsProvider.class.getClassLoader(), |
| 96 | List.of(classLoaders) |
| 97 | ); |
| 98 | for (var provider : ServiceLoader.load(FunctionsProvider.class, compositeLoader)) { |
| 99 | provider.addFunctions(settings, sessionSettingRegistry, builder); |
| 100 | } |
| 101 | return builder.build(); |
| 102 | } |
| 103 | |
| 104 | private Functions(Map<FunctionName, List<FunctionProvider>> functionProvidersByName) { |
| 105 | this.functionImplementations = functionProvidersByName; |