DataSource ds = env.get(dskey) .orElseThrow(() -> new NoSuchElementException("DataSource missing: " + dskey)); env.onStart(ebean::start); env.onStop(ebean::stop); ServiceKey keys = env.serviceKey(); keys.generate(EbeanServer.class, name, provider); env.onStart(runEnhancer());
@Override public void configure(final Env env, final Config conf, final Binder binder) { // empty metric & checks MapBinder.newMapBinder(binder, String.class, Metric.class); MapBinder.newMapBinder(binder, String.class, HealthCheck.class); Router routes = env.router(); MetricHandler mhandler = new MetricHandler(); routes.use("GET", this.pattern + "/metrics", mhandler); routes.use("GET", this.pattern + "/metrics/:type", mhandler); routes.use("GET", this.pattern + "/healthcheck", new HealthCheckHandler()); Multibinder<Reporter> reporters = Multibinder.newSetBinder(binder, Reporter.class); binder.bind(MetricRegistry.class).toInstance(metricRegistry); this.reporters.forEach(it -> reporters.addBinding().toInstance(it.apply(metricRegistry, conf))); binder.bind(MetricRegistryInitializer.class).asEagerSingleton(); env.onStop(app -> app.require(MetricRegistryInitializer.class).close()); binder.bind(HealthCheckRegistry.class).toInstance(healthCheckRegistry); binder.bind(HealthCheckRegistryInitializer.class).asEagerSingleton(); bindings.forEach(it -> it.bind(binder, routes, conf)); this.routes.forEach(it -> it.accept(routes)); }
@Override public void configure(final Env env, final Config conf, final Binder binder) { boolean whoops = conf.hasPath("whoops.enabled") ? conf.getBoolean("whoops.enabled") : "dev".equals(env.name()); if (whoops) { ClassLoader loader = env.router().getClass().getClassLoader(); Handler handler = prettyPage(loader, SourceLocator.local(), maxFrameSize, log); env.router().err(tryPage(handler, log)); } }
@Override public void configure(final Env env, final Config config, final Binder binder) { Key<DataSource> dskey = Key.get(DataSource.class, Names.named(name)); DataSource ds = env.get(dskey) .orElseThrow(() -> new NoSuchElementException("DataSource missing: " + dskey)); Database db = Database.fromDataSource(ds); env.serviceKey().generate(Database.class, name, k -> binder.bind(k).toInstance(db)); // close on shutdown env.onStop(db::close); } }
private static List<Object> processEnvDep(final Set<Object> src, final Env env) { List<Object> result = new ArrayList<>(); List<Object> bag = new ArrayList<>(src); bag.forEach(it -> { if (it instanceof EnvDep) { EnvDep envdep = (EnvDep) it; if (envdep.predicate.test(env.name())) { int from = src.size(); envdep.callback.accept(env.config()); int to = src.size(); result.addAll(new ArrayList<>(src).subList(from, to)); } } else { result.add(it); } }); return result; }
@SuppressWarnings({"unchecked", "rawtypes" }) @Override public void configure(final Env env, final Config conf, final Binder binder) throws Throwable { String db = database(conf, this.db); Properties props = props(neo4j(conf, this.db)); ServiceKey keys = env.serviceKey(); IDBAccess dbaccess = dbaccess(conf, this.db, db, props, keys, binder); Arrays.asList(props.getProperty(SERVER_ROOT_URI), props.getProperty(DATABASE_DIR)) .stream() .filter(Objects::nonNull) .findFirst() .ifPresent(it -> log.info("Starting neo4j: {}", it)); Class dbaccessType = dbaccess.getClass(); keys.generate(IDBAccess.class, this.db, k -> binder.bind(k).toInstance(dbaccess)); keys.generate(dbaccessType, this.db, k -> binder.bind(k).toInstance(dbaccess)); env.onStop(dbaccess::close); }
@Override public void configure(final Env env, final Config conf, final Binder binder) { Key<DataSource> dskey = Key.get(DataSource.class, Names.named(name)); DataSource ds = env.get(dskey) .orElseThrow(() -> new NoSuchElementException("DataSource missing: " + dskey)); String dbtype = env.get(Key.get(String.class, Names.named(name + ".dbtype"))) .orElse("unknown"); SQLTemplates templates = this.templates.apply(dbtype); Configuration querydslconf = new Configuration(templates); if (callback != null) { callback.accept(querydslconf, conf); } SQLQueryFactory sqfp = new SQLQueryFactory(querydslconf, ds); ServiceKey serviceKey = env.serviceKey(); serviceKey.generate(SQLTemplates.class, name, k -> binder.bind(k).toInstance(templates)); serviceKey.generate(Configuration.class, name, k -> binder.bind(k).toInstance(querydslconf)); serviceKey.generate(SQLQueryFactory.class, name, k -> binder.bind(k).toInstance(sqfp)); }
@Override public void configure(final Env env, final Config config, final Binder binder) { /** * Pool */ GenericObjectPoolConfig poolConfig = poolConfig(config, name); int timeout = (int) config.getDuration("jedis.timeout", TimeUnit.MILLISECONDS); URI uri = URI.create(config.getString(name)); JedisPool pool = new JedisPool(poolConfig, uri, timeout); RedisProvider provider = new RedisProvider(pool, uri, poolConfig); env.onStart(provider::start); env.onStop(provider::stop); Provider<Jedis> jedis = (Provider<Jedis>) () -> pool.getResource(); ServiceKey serviceKey = env.serviceKey(); serviceKey.generate(JedisPool.class, name, k -> binder.bind(k).toInstance(pool)); serviceKey.generate(Jedis.class, name, k -> binder.bind(k).toProvider(jedis)); }
.filter(it -> !env.get(Key.get(DataSource.class, Names.named(it))).isPresent()) .collect(Collectors.toSet()); if (names.size() == 0) { names.forEach(it -> env.serviceKey().generate(DataSource.class, it, k -> { binder.bind(k).toInstance(ds); env.set(k, ds); dskeys.add(k); }) env.set(Key.get(String.class, Names.named(dbkey + ".url")), url); env.set(Key.get(String.class, Names.named(dbkey + ".dbtype")), dbtype.orElse("unknown")); env.onStarted(() -> dskeys.forEach(env::unset)); env.onStop(ds::close);
env.onStop(consul::destroy); env.serviceKey().generate(Consul.class, name, k -> binder.bind(k).toInstance(consul)); env.router().get(checkConfig.getString("path"), () -> response); env.onStarted(() -> agentClient.register(registration)); env.onStop(() -> agentClient.deregister(registration.getId()));
@Override public void configure(Env env, Config conf, Binder binder) { EventBus eventbus = factory.apply(conf); binder.bind(EventBus.class).toInstance(eventbus); List<Object> subscribers = new ArrayList<>(initialSubscribers.size()); /** Register subscribers: */ env.onStart(registry -> { initialSubscribers.forEach(candidate -> { Object subscriber = candidate; if (subscriber instanceof Class) { subscriber = registry.require((Class) subscriber); } subscribers.add(subscriber); eventbus.register(subscriber); } ); // free initial subscribers initialSubscribers.clear(); }); /** Unregister subscribers: */ env.onStop(() -> subscribers.forEach(eventbus::unregister)); } }
@Override public void configure(Env env, Config conf, Binder binder) throws Throwable { Key<DataSource> dskey = Key.get(DataSource.class, Names.named(name)); DataSource dataSource = env.get(dskey) .orElseThrow(() -> new NoSuchElementException("DataSource missing: " + dskey)); Jdbi jdbi = Jdbi.create(dataSource); callback.accept(jdbi, conf); env.serviceKey().generate(Jdbi.class, name, key -> binder.bind(key).toInstance(jdbi)); .in(RequestScoped.class); AtomicReference<Registry> registry = new AtomicReference<>(); env.onStart(registry::set); }); env.router() .use(it.method(), it.pattern(), new OpenHandle(jdbi, it)) .name("transactionPerRequest");
@Inject public FileMonitor(final Injector injector, final Env env, final WatchService watcher, final Set<FileEventOptions> optionList) { this.injector = injector; this.watcher = watcher; this.optionList = optionList; // start monitor: ExecutorService monitor = Executors.newSingleThreadExecutor(task -> { Thread thread = new Thread(task, "file-watcher"); thread.setDaemon(true); return thread; }); env.onStop(monitor::shutdown); monitor.execute(this); }
@Override public void configure(final Env env, final Config config, final Binder binder) throws Throwable { String envname = env.name(); boolean dev = "dev".equals(envname); ClassLoader loader = getClass().getClassLoader(); AssetCompiler compiler = new AssetCompiler(assetClassLoader, conf); Router routes = env.router(); List<String> dist = dev ? ImmutableList.of("dev") : ImmutableList.of(envname, "dist"); String prefix = dist.stream() compiler.setProgressBar(progressBar); Future<Map<String, List<File>>> future = liveCompiler.sync(); env.onStarted(() -> { Logger log = LoggerFactory.getLogger(AssetCompiler.class); if (!future.isDone()) { } else { env.onStarted(liveCompiler::watch); env.onStop(liveCompiler::stop); } else { handler = new AssetHandler("/"); env.onStop(compiler::stop);
.orElseGet(() -> ConnectionString.parse(conf.getString(db))); ServiceKey serviceKey = env.serviceKey(); }); env.router() .map(new CassandraMapper()); env.onStop(() -> { log.debug("Stopping {}", cstr); Try.run(session::close)
@Override public void configure(final Env env, final Config conf, final Binder binder) { Key<DataSource> dskey = Key.get(DataSource.class, Names.named(name)); DataSource dataSource = env.get(dskey) .orElseThrow(() -> new NoSuchElementException("DataSource missing: " + dskey)); Object newStore = store.apply(configuration); ServiceKey keys = env.serviceKey(); Consumer bind = k -> binder.bind((Key) k).toInstance(newStore); keys.generate(storeType, model.getName(), bind); env.onStart(registry -> { schema(conf, schema, schema -> new SchemaModifier(dataSource, model).createTables(schema)); states
@Override public void configure(final Env env, final Config conf, final Binder binder) { String baseurl = this.baseurl.orElseGet(() -> { if (conf.hasPath(SITEMAP_BASEURL)) { return conf.getString(SITEMAP_BASEURL); } else { Config $ = conf.getConfig("application"); return "http://" + $.getString("host") + ":" + $.getString("port") + $.getString("path"); } }); wpp.accept(binder); env.router().get(path, new SitemapHandler(path, NOT_ME.and(filter), gen(baseurl))); }
@Override public void configure(final Env env, final Config conf, final Binder binder) { configure(env, conf, binder, (uri, client) -> { String db = uri.getDatabase(); Mapper mapper = new Mapper(); Morphia morphia = new Morphia(mapper); if (this.morphiaCbck != null) { this.morphiaCbck.accept(morphia, conf); } Datastore datastore = morphia.createDatastore(client, mapper, db); if (gen != null) { mapper.addInterceptor(new AutoIncID(datastore, gen)); } if (callback != null) { callback.accept(datastore); } ServiceKey serviceKey = env.serviceKey(); serviceKey.generate(Morphia.class, db, k -> binder.bind(k).toInstance(morphia)); serviceKey.generate(Datastore.class, db, k -> binder.bind(k).toInstance(datastore)); env.onStart(registry -> new GuiceObjectFactory(registry, morphia)); }); }
/** * Runs the callback function if the current env matches the given name. * * @param name A name to test for. * @param fn A callback function. * @param <T> A resulting type. * @return A resulting object. */ @Nonnull default <T> Optional<T> ifMode(final String name, final Supplier<T> fn) { if (name().equals(name)) { return Optional.of(fn.get()); } return Optional.empty(); }
@Override public void configure(@Nonnull final Env env, @Nonnull final Config conf, @Nonnull final Binder binder) { ActorSystem sys = ActorSystem.create(name, conf); env.serviceKey().generate(ActorSystem.class, name, syskey -> binder.bind(syskey).toInstance(sys)); }