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()); }
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 addBean(final AfterBeanDiscovery afterBeanDiscovery, final String idSuffix, final Class<?> type, final Annotation qualifier, final Object instance) { afterBeanDiscovery.addBean() .id(MetricsExtension.class.getName() + ":" + type.getName() + ":" + idSuffix) .beanClass(type) .types(type, Object.class) .qualifiers(qualifier, Any.Literal.INSTANCE) .scope(Dependent.class) // avoid proxies, tck use assertEquals(proxy, registry.get(xxx)) .createWith(c -> instance); }
private void configureBogey(BeanManager bm, BeanConfigurator<Bogey> bogey){ bogey.beanClass(Bogey.class); bogey.addType(Bogey.class); bogey.addQualifier(Undead.UndeadLiteral.INSTANCE); bogey.produceWith(obj -> new Bogey()); }
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()); } } }
.scope(ApplicationScoped.class) .addTransitiveTypeClosure(MicroProfileConfigAuthenticationDetailsProvider.class) .beanClass(MicroProfileConfigAuthenticationDetailsProvider.class) .qualifiers(qualifiers) .createWith(cc -> new MicroProfileConfigAuthenticationDetailsProvider(config)); .scope(ApplicationScoped.class) .addTransitiveTypeClosure(ObjectStorageClient.Builder.class) .beanClass(ObjectStorageClient.Builder.class) .qualifiers(qualifiers) .createWith(cc -> { .scope(ApplicationScoped.class) .addTransitiveTypeClosure(ObjectStorageClient.class) .beanClass(ObjectStorageClient.class) .qualifiers(qualifiers) .createWith(cc -> {
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); }
private void configureGhost(BeanManager bm, BeanConfigurator<Ghost> ghost) { // creation using read from bean attributes ghost.read(bm.createBeanAttributes(bm.createAnnotatedType(Ghost.class))); ghost.beanClass(Ghost.class); ghost.addQualifier(Undead.UndeadLiteral.INSTANCE); ghost.addStereotype(Monster.class); ghost.scope(RequestScoped.class); // test replacement of IPs InjectionPoint ghostWeaponIP = null; InjectionPoint ghostDesireIP = null; for (AnnotatedField<? super Ghost> field : bm.createAnnotatedType(Ghost.class).getFields()) { if (field.getJavaMember().getType().equals(DesireToHurtHumans.class)) { ghostDesireIP = bm.createInjectionPoint(field); } if (field.getJavaMember().getType().equals(Weapon.class)) { ghostWeaponIP = bm.createInjectionPoint(field); } } // firstly add one IP, then replace it with other ghost.addInjectionPoint(ghostWeaponIP); ghost.injectionPoints(ghostDesireIP); // set producing ghost.produceWith(MonsterController.getGhostInstance); }
private void configureZombie(BeanManager bm, BeanConfigurator<Zombie> zombie) { // init with read() method, then set values zombie.read(bm.createAnnotatedType(Zombie.class)); zombie.beanClass(Zombie.class); zombie.addQualifiers(Undead.UndeadLiteral.INSTANCE, Dangerous.DangerousLiteral.INSTANCE); zombie.addStereotype(Monster.class); zombie.scope(RequestScoped.class); InjectionPoint zombieWeaponIP = null; InjectionPoint zombieDesireIP = null; for (AnnotatedField<? super Zombie> field : bm.createAnnotatedType(Zombie.class).getFields()) { if (field.getJavaMember().getType().equals(DesireToHurtHumans.class)) { zombieDesireIP = bm.createInjectionPoint(field); } if (field.getJavaMember().getType().equals(Weapon.class)) { zombieWeaponIP = bm.createInjectionPoint(field); } } // add multiple injection points zombie.addInjectionPoints(zombieWeaponIP, zombieDesireIP); // set Function as a supplier zombie.produceWith(MonsterController.zombieProducingFunction); // set BiConsumer to destroyWith zombie.destroyWith(MonsterController.zombieConsumer); // make passivation capable zombie.id("zombie"); }
private void customizeContext(final WebBeansContext instance) { final BeanManagerImpl beanManager = instance.getBeanManagerImpl(); final InterceptorsManager interceptorsManager = instance.getInterceptorsManager(); beanManager.addInternalBean(newBean(instance, configurator -> configurator.beanClass(Meecrowave.Builder.class) .scope(ApplicationScoped.class) .qualifiers(DefaultLiteral.INSTANCE) .types(Meecrowave.Builder.class, Object.class) .createWith(cc -> meecrowave.getConfiguration()))); beanManager.addInternalBean(newBean(instance, configurator -> configurator.beanClass(Meecrowave.class) .scope(ApplicationScoped.class) .qualifiers(DefaultLiteral.INSTANCE) .types(Meecrowave.class, AutoCloseable.class, Object.class) .createWith(cc -> meecrowave))); if (Cxfs.IS_PRESENT) { interceptorsManager.addInterceptorBindingType(JAXRSFieldInjectionInterceptor.Binding.class); beanManager.addAdditionalAnnotatedType(this, beanManager.createAnnotatedType(JAXRSFieldInjectionInterceptor.class)); } }
private void configureVampire(BeanManager bm, BeanConfigurator<Vampire> vampire) { vampire.read(bm.createAnnotatedType(Vampire.class)); vampire.beanClass(Vampire.class); vampire.addQualifier(Undead.UndeadLiteral.INSTANCE); vampire.addStereotype(Monster.class); vampire.scope(RequestScoped.class); // set createWith function vampire.createWith((CreationalContext<Vampire> creationalContext) -> { MonsterController.vampireInstanceCreated = true; AnnotatedType<Vampire> at = bm.createAnnotatedType(Vampire.class); BeanAttributes<Vampire> ba = bm.createBeanAttributes(at); return bm.createBean(ba, Vampire.class, bm.getInjectionTargetFactory(at)).create(creationalContext); }); }
private void customizeContext(final WebBeansContext instance) { final BeanManagerImpl beanManager = instance.getBeanManagerImpl(); final InterceptorsManager interceptorsManager = instance.getInterceptorsManager(); beanManager.addInternalBean(newBean(instance, configurator -> configurator.beanClass(Meecrowave.Builder.class) .scope(ApplicationScoped.class) .qualifiers(DefaultLiteral.INSTANCE) .types(Meecrowave.Builder.class, Object.class) .createWith(cc -> meecrowave.getConfiguration()))); beanManager.addInternalBean(newBean(instance, configurator -> configurator.beanClass(Meecrowave.class) .scope(ApplicationScoped.class) .qualifiers(DefaultLiteral.INSTANCE) .types(Meecrowave.class, AutoCloseable.class, Object.class) .createWith(cc -> meecrowave))); if (Cxfs.IS_PRESENT) { interceptorsManager.addInterceptorBindingType(JAXRSFieldInjectionInterceptor.Binding.class); beanManager.addAdditionalAnnotatedType(this, beanManager.createAnnotatedType(JAXRSFieldInjectionInterceptor.class)); } }