Search in sources :

Example 1 with OptionModule

use of org.lanternpowered.server.inject.option.OptionModule in project LanternServer by LanternPowered.

the class LanternModule method configure.

@Override
protected void configure() {
    // Inject into sponge
    requestStaticInjection(Sponge.class);
    // Injection Points
    install(new InjectionPointProvider());
    install(new InjectablePropertyProvider());
    // The logger
    bind(Logger.class).toInstance(this.logger);
    // Options
    install(new OptionModule() {

        @Override
        protected void configure0() {
            // Bind the arguments
            bindArguments().toInstance(arguments);
            // Bind the parser
            bindParser().toInstance(optionParser);
            // Expose the Option annotation
            exposeOptions();
        }
    });
    // Directories: Plugins, Libraries, Configs, ...
    bindAndExposePath(DirectoryKeys.ROOT, DirectoryKeys.DefaultValues.ROOT);
    // See below for all the other ones
    // Basic Configuration Annotations
    bindAndExpose(Path.class, ConfigDirAnnotation.SHARED).toProvider(SharedConfigDirAsPath.class).in(Scopes.SINGLETON);
    bindAndExpose(File.class, ConfigDirAnnotation.SHARED).toProvider(SharedConfigDirAsFile.class).in(Scopes.SINGLETON);
    // The Game
    bindAndExpose(Server.class).to(LanternServer.class);
    bindAndExpose(LanternServer.class);
    bindAndExpose(Game.class).to(LanternGame.class);
    bindAndExpose(MinecraftVersion.class).toInstance(LanternMinecraftVersion.CURRENT);
    bindAndExpose(ServiceManager.class).to(LanternServiceManager.class);
    bindAndExpose(AssetManager.class).to(LanternAssetManager.class);
    bindAndExpose(GameRegistry.class).to(LanternGameRegistry.class);
    bindAndExpose(TeleportHelper.class).to(LanternTeleportHelper.class);
    bindAndExpose(Scheduler.class).to(LanternScheduler.class);
    bindAndExpose(CommandManager.class).to(LanternCommandManager.class);
    bindAndExpose(Platform.class).to(LanternPlatform.class);
    bindAndExpose(EventManager.class).to(LanternEventManager.class);
    bindAndExpose(ChannelRegistrar.class).to(LanternChannelRegistrar.class);
    bindAndExpose(GameProfileManager.class).to(LanternGameProfileManager.class);
    bindAndExpose(PropertyRegistry.class).to(LanternPropertyRegistry.class);
    bindAndExpose(ConfigManager.class).to(LanternConfigManager.class);
    bindAndExpose(PluginManager.class).to(LanternPluginManager.class);
    bindAndExpose(DataManager.class).to(LanternDataManager.class);
    bindAndExpose(PropertyRegistry.class).to(LanternPropertyRegistry.class);
    bindAndExpose(CauseStackManager.class).toInstance(LanternCauseStackManager.INSTANCE);
    bindAndExpose(MetricsConfigManager.class).to(LanternMetricsConfigManager.class);
    // The Indexed Channel Binding
    bindAndExpose(ChannelBinding.IndexedMessageChannel.class).toProvider(ChannelBindingProvider.Indexed.class);
    bindAndExpose(ChannelBinding.IndexedMessageChannel.class, Named.class).toProvider(ChannelBindingProvider.Indexed.class);
    bindAndExpose(ChannelBinding.IndexedMessageChannel.class, ChannelId.class).toProvider(ChannelBindingProvider.Indexed.class);
    // The Raw Channel Binding
    bindAndExpose(ChannelBinding.RawDataChannel.class).toProvider(ChannelBindingProvider.Raw.class);
    bindAndExpose(ChannelBinding.RawDataChannel.class, Named.class).toProvider(ChannelBindingProvider.Raw.class);
    bindAndExpose(ChannelBinding.RawDataChannel.class, ChannelId.class).toProvider(ChannelBindingProvider.Raw.class);
    // Assets
    bindAndExpose(Asset.class, Named.class).toProvider(PluginAssetProvider.class);
    bindAndExpose(Asset.class, AssetId.class).toProvider(PluginAssetProvider.class);
    // Internal Plugin Containers
    bindAndExpose(PluginContainer.class, Names.named(InternalPluginsInfo.Api.IDENTIFIER)).to(InternalPluginContainer.Api.class);
    bindAndExpose(PluginContainer.class, Names.named(InternalPluginsInfo.SpongePlatform.IDENTIFIER)).to(InternalPluginContainer.SpongePlatform.class);
    bindAndExpose(PluginContainer.class, Names.named(InternalPluginsInfo.Minecraft.IDENTIFIER)).to(InternalPluginContainer.Minecraft.class);
    bindAndExpose(PluginContainer.class, Names.named(InternalPluginsInfo.Implementation.IDENTIFIER)).to(InternalPluginContainer.Implementation.class);
    // Loggers
    bindAndExpose(Logger.class, Named.class).toProvider(NamedSlf4jLoggerProvider.class);
    expose(org.apache.logging.log4j.Logger.class);
    bindAndExpose(org.apache.logging.log4j.Logger.class, Named.class).toProvider(NamedLog4jLoggerProvider.class);
    // Other Plugin Containers
    bindAndExpose(PluginContainer.class, Named.class).toProvider(PluginContainerProvider.class);
    // Sponge Executor Services
    bindAndExpose(SpongeExecutorService.class, SynchronousExecutor.class).toProvider(SpongeExecutorServiceProvider.Synchronous.class);
    bindAndExpose(SpongeExecutorService.class, AsynchronousExecutor.class).toProvider(SpongeExecutorServiceProvider.Asynchronous.class);
}
Also used : LanternServer(org.lanternpowered.server.LanternServer) Server(org.spongepowered.api.Server) LanternPlatform(org.lanternpowered.server.game.LanternPlatform) Platform(org.spongepowered.api.Platform) AsynchronousExecutor(org.spongepowered.api.scheduler.AsynchronousExecutor) LanternScheduler(org.lanternpowered.server.scheduler.LanternScheduler) Scheduler(org.spongepowered.api.scheduler.Scheduler) GameRegistry(org.spongepowered.api.GameRegistry) LanternGameRegistry(org.lanternpowered.server.game.LanternGameRegistry) LanternChannelRegistrar(org.lanternpowered.server.network.channel.LanternChannelRegistrar) ChannelRegistrar(org.spongepowered.api.network.ChannelRegistrar) SpongeExecutorServiceProvider(org.lanternpowered.server.inject.provider.SpongeExecutorServiceProvider) Logger(org.slf4j.Logger) ChannelId(org.spongepowered.api.network.ChannelId) LanternPluginManager(org.lanternpowered.server.plugin.LanternPluginManager) PluginManager(org.spongepowered.api.plugin.PluginManager) LanternMetricsConfigManager(org.lanternpowered.server.util.metric.LanternMetricsConfigManager) MetricsConfigManager(org.spongepowered.api.util.metric.MetricsConfigManager) LanternCommandManager(org.lanternpowered.server.command.LanternCommandManager) CommandManager(org.spongepowered.api.command.CommandManager) LanternGameProfileManager(org.lanternpowered.server.profile.LanternGameProfileManager) GameProfileManager(org.spongepowered.api.profile.GameProfileManager) LanternServiceManager(org.lanternpowered.server.service.LanternServiceManager) ServiceManager(org.spongepowered.api.service.ServiceManager) LanternCauseStackManager(org.lanternpowered.server.cause.LanternCauseStackManager) CauseStackManager(org.spongepowered.api.event.CauseStackManager) OptionModule(org.lanternpowered.server.inject.option.OptionModule) Asset(org.spongepowered.api.asset.Asset) SpongeExecutorService(org.spongepowered.api.scheduler.SpongeExecutorService) LanternPropertyRegistry(org.lanternpowered.server.data.property.LanternPropertyRegistry) PropertyRegistry(org.spongepowered.api.data.property.PropertyRegistry) SynchronousExecutor(org.spongepowered.api.scheduler.SynchronousExecutor) Named(com.google.inject.name.Named) LanternAssetManager(org.lanternpowered.server.asset.LanternAssetManager) AssetManager(org.spongepowered.api.asset.AssetManager) PluginContainer(org.spongepowered.api.plugin.PluginContainer) InternalPluginContainer(org.lanternpowered.server.plugin.InternalPluginContainer) EventManager(org.spongepowered.api.event.EventManager) LanternEventManager(org.lanternpowered.server.event.LanternEventManager) DataManager(org.spongepowered.api.data.DataManager) LanternDataManager(org.lanternpowered.server.data.LanternDataManager) LanternMetricsConfigManager(org.lanternpowered.server.util.metric.LanternMetricsConfigManager) LanternConfigManager(org.lanternpowered.server.config.LanternConfigManager) MetricsConfigManager(org.spongepowered.api.util.metric.MetricsConfigManager) ConfigManager(org.spongepowered.api.config.ConfigManager) TeleportHelper(org.spongepowered.api.world.TeleportHelper) LanternTeleportHelper(org.lanternpowered.server.world.LanternTeleportHelper) Game(org.spongepowered.api.Game) LanternGame(org.lanternpowered.server.game.LanternGame) ChannelBindingProvider(org.lanternpowered.server.inject.provider.ChannelBindingProvider) InternalPluginContainer(org.lanternpowered.server.plugin.InternalPluginContainer) AssetId(org.spongepowered.api.asset.AssetId) LanternMinecraftVersion(org.lanternpowered.server.game.version.LanternMinecraftVersion) MinecraftVersion(org.spongepowered.api.MinecraftVersion)

Example 2 with OptionModule

use of org.lanternpowered.server.inject.option.OptionModule in project LanternServer by LanternPowered.

the class InjectionTest method test.

@Test
public void test() {
    final double valueA = 10.684;
    final int valueB = 500;
    final AbstractModule module = new AbstractModule() {

        @Override
        protected void configure() {
            install(new InjectionPointProvider());
            final OptionParser optionParser = new OptionParser();
            optionParser.allowsUnrecognizedOptions();
            install(new OptionModule() {

                @Override
                protected void configure0() {
                    bindArguments().toInstance(new String[] { "--my-option=" + valueB, "--my-other-option=" + valueA });
                    bindParser().toInstance(optionParser);
                }
            });
        }
    };
    final Injector injector = Guice.createInjector(module);
    final TestObject testObject = injector.getInstance(TestObject.class);
    assertEquals(testObject.myOtherOption, valueA, GenericMath.DBL_EPSILON);
    assertEquals(testObject.myOption, valueB);
}
Also used : Injector(com.google.inject.Injector) OptionModule(org.lanternpowered.server.inject.option.OptionModule) OptionParser(joptsimple.OptionParser) AbstractModule(com.google.inject.AbstractModule) Test(org.junit.Test)

Aggregations

OptionModule (org.lanternpowered.server.inject.option.OptionModule)2 AbstractModule (com.google.inject.AbstractModule)1 Injector (com.google.inject.Injector)1 Named (com.google.inject.name.Named)1 OptionParser (joptsimple.OptionParser)1 Test (org.junit.Test)1 LanternServer (org.lanternpowered.server.LanternServer)1 LanternAssetManager (org.lanternpowered.server.asset.LanternAssetManager)1 LanternCauseStackManager (org.lanternpowered.server.cause.LanternCauseStackManager)1 LanternCommandManager (org.lanternpowered.server.command.LanternCommandManager)1 LanternConfigManager (org.lanternpowered.server.config.LanternConfigManager)1 LanternDataManager (org.lanternpowered.server.data.LanternDataManager)1 LanternPropertyRegistry (org.lanternpowered.server.data.property.LanternPropertyRegistry)1 LanternEventManager (org.lanternpowered.server.event.LanternEventManager)1 LanternGame (org.lanternpowered.server.game.LanternGame)1 LanternGameRegistry (org.lanternpowered.server.game.LanternGameRegistry)1 LanternPlatform (org.lanternpowered.server.game.LanternPlatform)1 LanternMinecraftVersion (org.lanternpowered.server.game.version.LanternMinecraftVersion)1 ChannelBindingProvider (org.lanternpowered.server.inject.provider.ChannelBindingProvider)1 SpongeExecutorServiceProvider (org.lanternpowered.server.inject.provider.SpongeExecutorServiceProvider)1