/** * Creates a new Jersey-specific {@link javax.enterprise.inject.spi.Bean} instance. * * @param binding {@link javax.enterprise.inject.spi.BeanAttributes} part of the bean. */ @SuppressWarnings("unchecked") SupplierBeanBridge(SupplierClassBinding binding, BeanManager beanManager) { super(binding); // Register wrapper for factory functionality, wrapper automatically call service locator which is able to retrieve // the service in the proper context and scope. Bridge is registered for all contracts but is able to lookup from // service locator only using the first contract. Type contract = null; if (binding.getContracts().iterator().hasNext()) { contract = (Type) binding.getContracts().iterator().next(); } this.binding = binding; this.beanManager = beanManager; this.disposable = DisposableSupplier.class.isAssignableFrom(binding.getSupplierClass()); this.type = new ParameterizedTypeImpl(Supplier.class, contract); }
/** * Creates a new Jersey-specific {@link javax.enterprise.inject.spi.Bean} instance. * * @param binding {@link javax.enterprise.inject.spi.BeanAttributes} part of the bean. */ SupplierClassBean(SupplierClassBinding<T> binding) { super(binding); this.supplierClass = binding.getSupplierClass(); this.supplierScope = binding.getSupplierScope(); for (Type contract : binding.getContracts()) { this.contracts.add(new ParameterizedTypeImpl(Supplier.class, contract)); if (DisposableSupplier.class.isAssignableFrom(supplierClass)) { this.contracts.add(new ParameterizedTypeImpl(DisposableSupplier.class, contract)); } } }
boolean disposable = DisposableSupplier.class.isAssignableFrom(binding.getSupplierClass()); ServiceBindingBuilder<?> supplierBuilder = binder.bind(binding.getSupplierClass()); binding.getContracts().forEach(contract -> { supplierBuilder.to(new ParameterizedTypeImpl(Supplier.class, contract));
boolean disposable = DisposableSupplier.class.isAssignableFrom(binding.getSupplierClass()); ServiceBindingBuilder<?> supplierBuilder = binder.bind(binding.getSupplierClass()); binding.getContracts().forEach(contract -> { supplierBuilder.to(new ParameterizedTypeImpl(Supplier.class, contract));
/** * Registers a class supplier and its provided value as {@link JerseyBean}s into {@link BeanManager}. * * @param binding object containing {@link javax.enterprise.inject.spi.BeanAttributes} information. * @param abd {@link AfterBeanDiscovery} event. * @param resolvers all registered injection resolvers. * @param beanManager currently used bean manager. * @param <T> type of the class which is registered. */ @SuppressWarnings("unchecked") public static <T> void registerSupplier(SupplierClassBinding<T> binding, AfterBeanDiscovery abd, Collection<InjectionResolver> resolvers, BeanManager beanManager) { Class<Supplier<T>> supplierClass = (Class<Supplier<T>>) binding.getSupplierClass(); AnnotatedType<Supplier<T>> annotatedType = beanManager.createAnnotatedType(supplierClass); InjectionTarget<Supplier<T>> injectionTarget = beanManager.createInjectionTarget(annotatedType); SupplierClassBean<T> supplierBean = new SupplierClassBean<>(binding); InjectionTarget<Supplier<T>> jit = getJerseyInjectionTarget(supplierClass, injectionTarget, supplierBean, resolvers); supplierBean.setInjectionTarget(jit); abd.addBean(supplierBean); abd.addBean(new SupplierBeanBridge(binding, beanManager)); }
boolean disposable = DisposableSupplier.class.isAssignableFrom(binding.getSupplierClass()); ServiceBindingBuilder<?> supplierBuilder = binder.bind(binding.getSupplierClass()); binding.getContracts().forEach(contract -> { supplierBuilder.to(new ParameterizedTypeImpl(Supplier.class, contract));
boolean disposable = DisposableSupplier.class.isAssignableFrom(binding.getSupplierClass()); ServiceBindingBuilder<?> supplierBuilder = binder.bind(binding.getSupplierClass()); binding.getContracts().forEach(contract -> { supplierBuilder.to(new ParameterizedTypeImpl(Supplier.class, contract));