use of space.arim.libertybans.bootstrap.BaseFoundation in project LibertyBans by A248.
the class VelocityInitializer method initialize.
BaseFoundation initialize() {
Platform platform = detectPlatform();
ProxyServer server = velocityPlugin.server;
Path folder = velocityPlugin.folder;
Logger logger = velocityPlugin.logger;
PluginContainer plugin = server.getPluginManager().fromInstance(velocityPlugin).get();
Scheduler scheduler = server.getScheduler();
Executor executor = (cmd) -> scheduler.buildTask(plugin, cmd).schedule();
Path jarFile = plugin.getDescription().getSource().get();
LibertyBansLauncher launcher = new LibertyBansLauncher(new Slf4jBootstrapLogger(velocityPlugin.logger), platform, velocityPlugin.folder, executor, jarFile, new VelocityCulpritFinder(server));
ClassLoader launchLoader = launcher.attemptLaunch().join();
if (launchLoader == null) {
logger.warn("Failed to launch LibertyBans");
return null;
}
BaseFoundation base;
try {
base = new Instantiator("space.arim.libertybans.env.velocity.VelocityLauncher", launchLoader).invoke(Map.Entry.class, Map.entry(plugin, server), folder);
} catch (IllegalArgumentException | SecurityException | ReflectiveOperationException ex) {
logger.warn("Failed to launch LibertyBans", ex);
return null;
}
base.startup();
return base;
}
use of space.arim.libertybans.bootstrap.BaseFoundation in project LibertyBans by A248.
the class VelocityPlugin method onProxyShutdown.
@Subscribe
public synchronized void onProxyShutdown(ProxyShutdownEvent evt) {
BaseFoundation base = this.base;
this.base = null;
if (base == null) {
logger.warn("LibertyBans wasn't launched; check your log for a startup error");
return;
}
base.shutdown();
}
use of space.arim.libertybans.bootstrap.BaseFoundation in project LibertyBans by A248.
the class JpmsTest method initialize.
@Test
public void initialize() {
BaseFoundation foundation = assertDoesNotThrow(() -> newLauncher().launch());
assertNotNull(foundation);
}
use of space.arim.libertybans.bootstrap.BaseFoundation in project LibertyBans by A248.
the class JpmsTest method startupAndShutdown.
@Test
public void startupAndShutdown() {
// This test is mostly intended to check that the configuration is exported to dazzleconf
when(handle.createFuturesFactory()).thenReturn(new IndifferentFactoryOfTheFuture());
when(environment.createListeners()).thenReturn(Set.of());
when(environment.createAliasCommand(any())).thenReturn(new PlatformListener() {
@Override
public void register() {
}
@Override
public void unregister() {
}
});
BaseFoundation foundation = newLauncher().launch();
assertDoesNotThrow(foundation::startup);
assertDoesNotThrow(foundation::shutdown);
}
use of space.arim.libertybans.bootstrap.BaseFoundation in project LibertyBans by A248.
the class ResourceCreator method createSingle.
private Optional<Injector> createSingle(ConfigSpec configSpec, DatabaseInstance database, InstanceKey instanceKey) {
DatabaseInfo databaseInfo = database.createInfo().orElse(null);
if (databaseInfo == null) {
return Optional.empty();
}
return Optional.of(store.getOrComputeIfAbsent(instanceKey, (ignore) -> {
Path tempDirectory = createTempDirectory();
Injector injector = new InjectorBuilder().bindInstance(Identifier.ofTypeAndNamed(Path.class, "folder"), tempDirectory).bindInstance(ConfigSpec.class, configSpec).bindInstance(DatabaseInfo.class, databaseInfo).bindInstance(DatabaseInstance.class, database).bindInstance(Identifier.ofTypeAndNamed(Instant.class, "testStartTime"), configSpec.unixTime()).addBindModules(new ApiBindModule(), new PillarOneReplacementModule(), new PillarTwoBindModule(), new QuackBindModule()).build();
BaseFoundation base = injector.request(BaseFoundation.class);
base.startup();
return new BaseWrapper(injector, base, tempDirectory);
}, BaseWrapper.class).injector);
}
Aggregations