/embulk-core/src/main/java/org/embulk/EmbulkService.java
Java | 76 lines | 63 code | 13 blank | 0 comment | 1 complexity | b626aaac454e82716bc172a10981fc38 MD5 | raw file
1package org.embulk;
2
3import java.util.List;
4import com.google.common.collect.ImmutableList;
5import com.google.inject.Guice;
6import com.google.inject.Injector;
7import com.google.inject.Module;
8import org.embulk.config.ConfigSource;
9import org.embulk.exec.SystemConfigModule;
10import org.embulk.exec.ExecModule;
11import org.embulk.exec.ExtensionServiceLoaderModule;
12import org.embulk.plugin.PluginClassLoaderModule;
13import org.embulk.plugin.BuiltinPluginSourceModule;
14import org.embulk.jruby.JRubyScriptingModule;
15import static com.google.common.base.Preconditions.checkState;
16
17@Deprecated
18public class EmbulkService
19{
20 private final ConfigSource systemConfig;
21
22 protected Injector injector;
23 private boolean initialized;
24
25 public EmbulkService(ConfigSource systemConfig)
26 {
27 this.systemConfig = systemConfig;
28 }
29
30 protected Iterable<? extends Module> getAdditionalModules(ConfigSource systemConfig)
31 {
32 return ImmutableList.of();
33 }
34
35 protected Iterable<? extends Module> overrideModules(Iterable<? extends Module> modules, ConfigSource systemConfig)
36 {
37 return modules;
38 }
39
40 static List<Module> standardModuleList(ConfigSource systemConfig)
41 {
42 return ImmutableList.of(
43 new SystemConfigModule(systemConfig),
44 new ExecModule(),
45 new ExtensionServiceLoaderModule(systemConfig),
46 new PluginClassLoaderModule(systemConfig),
47 new BuiltinPluginSourceModule(),
48 new JRubyScriptingModule(systemConfig));
49 }
50
51 public Injector initialize()
52 {
53 checkState(!initialized, "Already initialized");
54
55 ImmutableList.Builder<Module> builder = ImmutableList.builder();
56 builder.addAll(standardModuleList(systemConfig));
57 builder.addAll(getAdditionalModules(systemConfig));
58
59 Iterable<? extends Module> modules = builder.build();
60 modules = overrideModules(modules, systemConfig);
61
62 injector = Guice.createInjector(modules);
63 initialized = true;
64
65 return injector;
66 }
67
68 @Deprecated
69 public synchronized Injector getInjector()
70 {
71 if (initialized) {
72 return injector;
73 }
74 return initialize();
75 }
76}