public static void registerVertxBeanIfNeeded(AfterBeanDiscovery discovery, BeanManager beanManager) { Optional<Bean<?>> optional = beanManager.getBeans(Vertx.class).stream().findFirst(); if (!optional.isPresent()) { LOGGER.debug("Declaring a Vert.x bean"); discovery.addBean() .types(Vertx.class) .beanClass(Vertx.class) .scope(Singleton.class) .produceWith(i -> Vertx.vertx()) .disposeWith((vertx, i) -> vertx.close()); } } }
private void afterBeanDiscovery(@Observes final AfterBeanDiscovery event) { if (event != null) { for (final String dataSourceName : this.dataSourceNames) { event.<HikariDataSource>addBean() .addQualifier(NamedLiteral.of(dataSourceName)) // ...and Default and Any? .addTransitiveTypeClosure(HikariDataSource.class) .beanClass(HikariDataSource.class) .scope(ApplicationScoped.class) .produceWith(beans -> new HikariDataSource(new HikariConfig(toProperties(dataSourceName, beans.select(Config.class).get())))) .disposeWith((dataSource, beans) -> dataSource.close()); } } }
private void addCamelContext(@Observes AfterBeanDiscovery abd, BeanManager manager) { abd.addBean() .types(CamelContext.class) .scope(ApplicationScoped.class) .produceWith(instance -> new DefaultCamelContext(new CamelCdiRegistry(manager))) .disposeWith(rethrow((context, instance) -> context.stop())); }
private void addCamelContext(@Observes AfterBeanDiscovery abd, BeanManager manager) { abd.addBean() .types(CamelContext.class) .scope(ApplicationScoped.class) .produceWith(instance -> new DefaultCamelContext(new CamelCdiRegistry(manager))) .disposeWith(rethrow((context, instance) -> context.stop())); }
private void configureSkeleton(BeanManager bm, BeanConfigurator<Skeleton> skeleton) { // set bean class, qualifier, stereotype, scope // no read() method used here, all set manually skeleton.beanClass(Skeleton.class); skeleton.addQualifier(Undead.UndeadLiteral.INSTANCE); skeleton.addStereotype(Monster.class); skeleton.scope(RequestScoped.class); skeleton.addTransitiveTypeClosure(Skeleton.class); for (AnnotatedField<? super Skeleton> field : bm.createAnnotatedType(Skeleton.class).getFields()) { if (field.getJavaMember().getType().equals(DesireToHurtHumans.class)) { skeleton.addInjectionPoint(bm.createInjectionPoint(field)); break; } } // set Supplier as producer skeleton.produceWith(MonsterController.skeletonSupplier); // set Consumer in dispose method skeleton.disposeWith(MonsterController.skeletonConsumer); }