private void configureWerewolf(BeanManager bm, BeanConfigurator<Werewolf> werewolf){ werewolf.beanClass(Werewolf.class); werewolf.addTransitiveTypeClosure(Werewolf.class); Set<Class<? extends Annotation>> stereotypes = new HashSet<>(); stereotypes.add(Model.class); werewolf.stereotypes(stereotypes); werewolf.produceWith(obj -> new Werewolf()); }
/** * Creates a bean deliberately in {@link Singleton} scope to * represent the {@link JpaInjectionServices} class. * * <p>Weld often creates multiple copies of {@link * JpaInjectionServices} by virtue of the way it loads its bootstrap * services. We want to ensure there's just one that can be * injected into observer methods. See the {@link * TransactionSynchronizationRegistryObserver} class, which houses * one such observer method.</p> * * @param event the {@link AfterBeanDiscovery} event; may be {@code * null} in which case no action will be taken * * @see JpaInjectionServices * * @see TransactionSynchronizationRegistryObserver */ private final void afterBeanDiscovery(@Observes final AfterBeanDiscovery event) { if (event != null) { event.addBean() .addTransitiveTypeClosure(JpaInjectionServices.class) .scope(Singleton.class) .createWith(ignored -> JpaInjectionServices.INSTANCE); } }
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()); } } }
event.<AuthenticationDetailsProvider>addBean() .scope(ApplicationScoped.class) .addTransitiveTypeClosure(MicroProfileConfigAuthenticationDetailsProvider.class) .beanClass(MicroProfileConfigAuthenticationDetailsProvider.class) .qualifiers(qualifiers) event.<ObjectStorageClient.Builder>addBean() .scope(ApplicationScoped.class) .addTransitiveTypeClosure(ObjectStorageClient.Builder.class) .beanClass(ObjectStorageClient.Builder.class) .qualifiers(qualifiers) event.<ObjectStorage>addBean() .scope(ApplicationScoped.class) .addTransitiveTypeClosure(ObjectStorageClient.class) .beanClass(ObjectStorageClient.class) .qualifiers(qualifiers)
.addTransitiveTypeClosure(this.configurations.getClass()) .createWith(cc -> this.configurations) .scope(Singleton.class); assert type != null; event.addBean() .addTransitiveTypeClosure(type) .addQualifiers(new ConfigurationCoordinates.Literal(), ConfigurationValue.Literal.of(""))
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); }
.addTransitiveTypeClosure(ExecutorService.class) .scope(ApplicationScoped.class) .qualifiers(qualifiers) .addTransitiveTypeClosure(Routing.Builder.class) .scope(ApplicationScoped.class) .qualifiers(qualifiers) .addTransitiveTypeClosure(Routing.class) .scope(ApplicationScoped.class) .qualifiers(qualifiers) .addTransitiveTypeClosure(BareRequest.class) .scope(RequestScoped.class) .qualifiers(qualifiers) .addTransitiveTypeClosure(BareResponse.class) .scope(RequestScoped.class) .qualifiers(qualifiers) .addTransitiveTypeClosure(ServerRequest.class) .scope(RequestScoped.class) .qualifiers(qualifiers) .addTransitiveTypeClosure(ServerResponse.class) .scope(RequestScoped.class) .qualifiers(qualifiers) .addTransitiveTypeClosure(ServerConfiguration.Builder.class)