-
Notifications
You must be signed in to change notification settings - Fork 0
/
Main.java
39 lines (29 loc) · 1.34 KB
/
Main.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package work.lclpnet.example;
import org.slf4j.LoggerFactory;
import work.lclpnet.plugin.DistinctPluginContainer;
import work.lclpnet.plugin.SimplePluginManager;
import work.lclpnet.plugin.bootstrap.OrderedPluginBootstrap;
import work.lclpnet.plugin.discover.DirectoryPluginDiscoveryService;
import work.lclpnet.plugin.load.DefaultClassLoaderContainer;
import work.lclpnet.plugin.manifest.JsonManifestLoader;
import java.io.IOException;
import java.nio.file.Path;
public class Main {
public static void main(String[] args) throws IOException {
final var logger = LoggerFactory.getLogger(Main.class);
final var classLoaderContainer = new DefaultClassLoaderContainer();
final var pluginDiscoveryService = new DirectoryPluginDiscoveryService(
Path.of("plugins"), new JsonManifestLoader(), classLoaderContainer, logger
);
final var pluginContainer = new DistinctPluginContainer(logger);
final var pluginBootstrap = new OrderedPluginBootstrap(pluginDiscoveryService, pluginContainer);
pluginBootstrap.loadPlugins();
final var pluginManager = new SimplePluginManager(pluginDiscoveryService, pluginContainer);
try {
new Cli(pluginManager).start();
} finally {
pluginManager.shutdown();
classLoaderContainer.close();
}
}
}