@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("The core of Bootique runtime."); } };
/** * Returns a new instance of {@link io.bootique.BQModule.Builder} initialized with module for this provider. * Subclasses can invoke extra builder methods to provide metadata, etc. * * @return a new instance of {@link BQModule} specific to this provider. * @since 0.21 */ default BQModule.Builder moduleBuilder() { return BQModule .builder(module()) .overrides(overrides()) .providerName(name()) .configs(configs()); }
private static Collection<BQModuleProvider> moduleProviderDependencies( Collection<BQModuleProvider> rootSet, Set<BQModuleProvider> processed) { for (BQModuleProvider moduleProvider : rootSet) { if (!processed.contains(moduleProvider)) { processed.add(moduleProvider); final Collection<BQModuleProvider> dependencies = moduleProvider.dependencies(); if (!dependencies.isEmpty()) { processed.addAll(moduleProviderDependencies(dependencies, processed)); } } } return processed; }
protected void testMetadata() { testWithFactory(testFactory -> { // must auto-load modules to ensure all tested module dependencies are present... BQRuntime runtime = testFactory.app().autoLoadModules().createRuntime(); BQModuleProvider provider = matchingProvider(); String providerName = provider.name(); // loading metadata ensures that all annotations are properly applied... Optional<ModuleMetadata> moduleMetadata = runtime .getInstance(ModulesMetadata.class) .getModules() .stream() .filter(mmd -> providerName.equals(mmd.getProviderName())) .findFirst(); assertTrue("No module metadata available for provider: '" + providerName + "'", moduleMetadata.isPresent()); moduleMetadata.get().getConfigs(); }); }
Injector createInjector() { DeferredModulesSource modulesSource = new DeferredModulesSource(); Collection<BQModule> bqModules = new ArrayList<>(); // note that 'moduleMetadata' is invalid at this point; it will be initialized later in this method, which // is safe to do, as it won't be used until the Injector is created by the method caller. bqModules.add(coreModuleProvider(modulesSource).moduleBuilder().build()); BootiqueUtils.moduleProviderDependencies(builderProviders()) .forEach(p -> bqModules.add(p.moduleBuilder().build())); if (autoLoadModules) { autoLoadedProviders().forEach(p -> bqModules.add(p.moduleBuilder().build())); } // now that all modules are collected, finish 'moduleMetadata' initialization modulesSource.init(bqModules); // convert to Guice modules respecting overrides, etc. Collection<Module> modules = new RuntimeModuleMerger(bootLogger).toGuiceModules(bqModules); return Guice.createInjector(modules); }
/** * Returns a new instance of {@link io.bootique.BQModule.Builder} initialized with module for this provider. * Subclasses can invoke extra builder methods to provide metadata, etc. * * @return a new instance of {@link BQModule} specific to this provider. * @since 0.21 */ default BQModule.Builder moduleBuilder() { return BQModule .builder(module()) .overrides(overrides()) .providerName(name()) .configs(configs()); }
private static Collection<BQModuleProvider> moduleProviderDependencies( Collection<BQModuleProvider> rootSet, Set<BQModuleProvider> processed) { for (BQModuleProvider moduleProvider : rootSet) { if (!processed.contains(moduleProvider)) { processed.add(moduleProvider); final Collection<BQModuleProvider> dependencies = moduleProvider.dependencies(); if (!dependencies.isEmpty()) { processed.addAll(moduleProviderDependencies(dependencies, processed)); } } } return processed; }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Integrates Tomcat DataSource implementation."); }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Provides integration with Apache Cayenne."); }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("The core of Bootique runtime."); } };
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Provides integration with Apache Shiro for Java servlet applications."); }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Provides configurable JAX-RS HTTP client with pluggable authentication."); } }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Provides configuration for JCache subsystem. Module itself does NOT include a JCache provider." + " The users will need to add a provider of their choice to the application classpath."); } }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Provides a REST-based web MVC engine with pluggable view renderers."); }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Provides configuration for and access to named JDBC DataSources."); }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Add metrics and healthchecks support to JdbcModule."); }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Integrates HikariCP DataSource implementation."); }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Provides integration with Apache Curator, a Zookeeper client."); } }
@Override public BQModule.Builder moduleBuilder() { return BQModuleProvider.super .moduleBuilder() .description("Provides injectable Shiro stack with custom Realms."); }
Injector createInjector() { DeferredModulesSource modulesSource = new DeferredModulesSource(); Collection<BQModule> bqModules = new ArrayList<>(); // note that 'moduleMetadata' is invalid at this point; it will be initialized later in this method, which // is safe to do, as it won't be used until the Injector is created by the method caller. bqModules.add(coreModuleProvider(modulesSource).moduleBuilder().build()); BootiqueUtils.moduleProviderDependencies(builderProviders()) .forEach(p -> bqModules.add(p.moduleBuilder().build())); if (autoLoadModules) { autoLoadedProviders().forEach(p -> bqModules.add(p.moduleBuilder().build())); } // now that all modules are collected, finish 'moduleMetadata' initialization modulesSource.init(bqModules); // convert to Guice modules respecting overrides, etc. Collection<Module> modules = new RuntimeModuleMerger(bootLogger).toGuiceModules(bqModules); return Guice.createInjector(modules); }