@Override protected void configure() { bindFactory(SimpleRequestReferencingFactory.class).to(Request.class).proxy(true) .proxyForSameScope(false).in(RequestScoped.class); bindFactory(ReferencingFactory.<Request>referenceFactory()) .to(new GenericType<Ref<Request>>() { }).in(RequestScoped.class); bindFactory(SimpleResponseReferencingFactory.class).to(Response.class).proxy(true) .proxyForSameScope(false).in(RequestScoped.class); bindFactory(ReferencingFactory.<Response>referenceFactory()) .to(new GenericType<Ref<Response>>() { }).in(RequestScoped.class); } }
boolean disposable = DisposableSupplier.class.isAssignableFrom(binding.getSupplierClass()); ServiceBindingBuilder<?> supplierBuilder = binder.bind(binding.getSupplierClass()); binding.getContracts().forEach(contract -> { supplierBuilder.to(new ParameterizedTypeImpl(Supplier.class, contract)); if (disposable) { binding.getQualifiers().forEach(supplierBuilder::qualifiedBy); supplierBuilder.named(binding.getName()); supplierBuilder.in(transformScope(binding.getSupplierScope())); binder.bind(supplierBuilder); if (binding.getContracts().iterator().hasNext()) { contract = binding.getContracts().iterator().next(); new SupplierFactoryBridge<>(locator, contract, binding.getName(), disposable)); setupSupplierFactoryBridge(binding, builder); if (binding.getImplementationType() != null) { builder.asType(binding.getImplementationType());
/** * 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)); } } }
/** * 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); }
@Override protected void configure() { bindFactory(DefaultConfigurationProvider.class, Singleton.class).to(Configuration.class).in(Singleton.class); bindFactory(DefaultValidatorFactoryProvider.class, Singleton.class).to(ValidatorFactory.class).in(Singleton.class); bindFactory(DefaultValidatorProvider.class, Singleton.class).to(Validator.class).in(Singleton.class); bindFactory(ConfiguredValidatorProvider.class, Singleton.class).to(ConfiguredValidator.class); // Custom Exception Mapper and Writer - registering in binder to make possible for users register their own providers. bind(ValidationExceptionMapper.class).to(ExceptionMapper.class).in(Singleton.class); bind(ValidationErrorMessageBodyWriter.class).to(MessageBodyWriter.class).in(Singleton.class); }
@Override protected void configure() { bindFactory(JettyRequestReferencingFactory.class).to(Request.class) .proxy(false).in(RequestScoped.class); bindFactory(ReferencingFactory.<Request>referenceFactory()).to(new GenericType<Ref<Request>>() {}) .in(RequestScoped.class); bindFactory(JettyResponseReferencingFactory.class).to(Response.class) .proxy(false).in(RequestScoped.class); bindFactory(ReferencingFactory.<Response>referenceFactory()).to(new GenericType<Ref<Response>>() {}) .in(RequestScoped.class); } }
@Override protected void configure() { bindFactory(ReferencingFactory.<ApplicationInfo>referenceFactory()) .to(new GenericType<Ref<ApplicationInfo>>() { }) .in(Singleton.class); bindFactory(ApplicationInfoInjectionFactory.class) .to(ApplicationInfo.class); } });
/** * 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)); }
@Override protected void configure() { bindSingletonWorker(DocumentProvider.class); bindSingletonWorker(XmlJaxbElementProvider.App.class); bindSingletonWorker(XmlJaxbElementProvider.Text.class); bindSingletonWorker(XmlJaxbElementProvider.General.class); bindSingletonWorker(XmlCollectionJaxbProvider.App.class); bindSingletonWorker(XmlCollectionJaxbProvider.Text.class); bindSingletonWorker(XmlCollectionJaxbProvider.General.class); bindSingletonWorker(XmlRootElementJaxbProvider.App.class); bindSingletonWorker(XmlRootElementJaxbProvider.Text.class); bindSingletonWorker(XmlRootElementJaxbProvider.General.class); bind(XmlRootObjectJaxbProvider.App.class).to(MessageBodyReader.class).in(Singleton.class); bind(XmlRootObjectJaxbProvider.Text.class).to(MessageBodyReader.class).in(Singleton.class); bind(XmlRootObjectJaxbProvider.General.class).to(MessageBodyReader.class).in(Singleton.class); // XML factory injection points: bindFactory(DocumentBuilderFactoryInjectionProvider.class).to(DocumentBuilderFactory.class).in(PerThread.class); bindFactory(SaxParserFactoryInjectionProvider.class).to(SAXParserFactory.class).in(PerThread.class); bindFactory(XmlInputFactoryInjectionProvider.class).to(XMLInputFactory.class).in(PerThread.class); bindFactory(TransformerFactoryInjectionProvider.class).to(TransformerFactory.class).in(PerThread.class); }
@Override protected void configure() { bindFactory(ReferencingFactory.<ApplicationInfo>referenceFactory()) .to(new GenericType<Ref<ApplicationInfo>>() { }) .in(Singleton.class); bindFactory(ApplicationInfoInjectionFactory.class) .to(ApplicationInfo.class); } });
@Override protected void configure() { bindFactory(GrizzlyRequestReferencingFactory.class).to(Request.class) .proxy(false).in(RequestScoped.class); bindFactory(ReferencingFactory.<Request>referenceFactory()).to(new GenericType<Ref<Request>>() {}) .in(RequestScoped.class); bindFactory(GrizzlyResponseReferencingFactory.class).to(Response.class) .proxy(true).proxyForSameScope(false).in(RequestScoped.class); bindFactory(ReferencingFactory.<Response>referenceFactory()).to(new GenericType<Ref<Response>>() {}) .in(RequestScoped.class); } }
@Override protected void configure() { install(new MessagingBinders.MessageBodyProviders(clientRuntimeProperties, RuntimeType.CLIENT), new MessagingBinders.HeaderDelegateProviders()); bindFactory(ReferencingFactory.referenceFactory()).to(new GenericType<Ref<ClientConfig>>() { }).in(RequestScoped.class); bindFactory(RequestContextInjectionFactory.class) .to(ClientRequest.class) .in(RequestScoped.class); bindFactory(ReferencingFactory.referenceFactory()).to(new GenericType<Ref<ClientRequest>>() { }).in(RequestScoped.class); bindFactory(PropertiesDelegateFactory.class, Singleton.class).to(PropertiesDelegate.class).in(RequestScoped.class); // ChunkedInput entity support bind(ChunkedInputReader.class).to(MessageBodyReader.class).in(Singleton.class); } }
@Override protected void configure() { bindFactory(ReferencingFactory.<MonitoringStatistics>referenceFactory()) .to(new GenericType<Ref<MonitoringStatistics>>() { }) .in(Singleton.class); bindFactory(StatisticsInjectionFactory.class).to(MonitoringStatistics.class); bind(StatisticsListener.class).to(MonitoringStatisticsListener.class).in(Singleton.class); } });
boolean disposable = DisposableSupplier.class.isAssignableFrom(binding.getSupplierClass()); ServiceBindingBuilder<?> supplierBuilder = binder.bind(binding.getSupplierClass()); binding.getContracts().forEach(contract -> { supplierBuilder.to(new ParameterizedTypeImpl(Supplier.class, contract)); if (disposable) { binding.getQualifiers().forEach(supplierBuilder::qualifiedBy); supplierBuilder.named(binding.getName()); supplierBuilder.in(transformScope(binding.getSupplierScope())); binder.bind(supplierBuilder); if (binding.getContracts().iterator().hasNext()) { contract = binding.getContracts().iterator().next(); new SupplierFactoryBridge<>(locator, contract, binding.getName(), disposable)); setupSupplierFactoryBridge(binding, builder); if (binding.getImplementationType() != null) { builder.asType(binding.getImplementationType());
.to(ContainerRequest.class).to(ContainerRequestContext.class) .proxy(false) .in(RequestScoped.class); .to(HttpHeaders.class).to(Request.class) .proxy(true).proxyForSameScope(false) .in(RequestScoped.class); .to(UriInfo.class).to(ExtendedUriInfo.class).to(ResourceInfo.class) .proxy(true).proxyForSameScope(false) .in(RequestScoped.class); .to(CloseableService.class) .proxy(true).proxyForSameScope(false) .in(RequestScoped.class); .to(AsyncContext.class) .to(AsyncResponse.class) .in(RequestScoped.class);
@Override protected void configure() { install(new MessagingBinders.MessageBodyProviders(clientRuntimeProperties, RuntimeType.CLIENT), new MessagingBinders.HeaderDelegateProviders()); bindFactory(ReferencingFactory.referenceFactory()).to(new GenericType<Ref<ClientConfig>>() { }).in(RequestScoped.class); bindFactory(RequestContextInjectionFactory.class) .to(ClientRequest.class) .in(RequestScoped.class); bindFactory(ReferencingFactory.referenceFactory()).to(new GenericType<Ref<ClientRequest>>() { }).in(RequestScoped.class); bindFactory(PropertiesDelegateFactory.class, Singleton.class).to(PropertiesDelegate.class).in(RequestScoped.class); // ChunkedInput entity support bind(ChunkedInputReader.class).to(MessageBodyReader.class).in(Singleton.class); } }
@Override protected void configure() { bindFactory(ReferencingFactory.<MonitoringStatistics>referenceFactory()) .to(new GenericType<Ref<MonitoringStatistics>>() { }) .in(Singleton.class); bindFactory(StatisticsInjectionFactory.class).to(MonitoringStatistics.class); bind(StatisticsListener.class).to(MonitoringStatisticsListener.class).in(Singleton.class); } });
boolean disposable = DisposableSupplier.class.isAssignableFrom(binding.getSupplierClass()); ServiceBindingBuilder<?> supplierBuilder = binder.bind(binding.getSupplierClass()); binding.getContracts().forEach(contract -> { supplierBuilder.to(new ParameterizedTypeImpl(Supplier.class, contract)); if (disposable) { binding.getQualifiers().forEach(supplierBuilder::qualifiedBy); supplierBuilder.named(binding.getName()); supplierBuilder.in(transformScope(binding.getSupplierScope())); binder.bind(supplierBuilder); if (binding.getContracts().iterator().hasNext()) { contract = binding.getContracts().iterator().next(); new SupplierFactoryBridge<>(locator, contract, binding.getName(), disposable)); setupSupplierFactoryBridge(binding, builder); if (binding.getImplementationType() != null) { builder.asType(binding.getImplementationType());
.to(ContainerRequest.class).to(ContainerRequestContext.class) .proxy(false) .in(RequestScoped.class); .to(HttpHeaders.class).to(Request.class) .proxy(true).proxyForSameScope(false) .in(RequestScoped.class); .to(UriInfo.class).to(ExtendedUriInfo.class).to(ResourceInfo.class) .proxy(true).proxyForSameScope(false) .in(RequestScoped.class); .to(CloseableService.class) .proxy(true).proxyForSameScope(false) .in(RequestScoped.class); .to(AsyncContext.class) .to(AsyncResponse.class) .in(RequestScoped.class);