// needs to be resolved once extension beans are deployed private void installFastProcessAnnotatedTypeResolver(ServiceRegistry services) { ClassFileServices classFileServices = services.get(ClassFileServices.class); if (classFileServices != null) { final GlobalObserverNotifierService observers = services.get(GlobalObserverNotifierService.class); try { final FastProcessAnnotatedTypeResolver resolver = new FastProcessAnnotatedTypeResolver(observers.getAllObserverMethods()); services.add(FastProcessAnnotatedTypeResolver.class, resolver); } catch (UnsupportedObserverMethodException e) { BootstrapLogger.LOG.notUsingFastResolver(e.getObserver()); return; } } }
private void addImplementationServices(ServiceRegistry services) { final WeldModules modules = new WeldModules(); services.add(WeldModules.class, modules); final WeldConfiguration configuration = services.get(WeldConfiguration.class); services.add(SlimAnnotatedTypeStore.class, new SlimAnnotatedTypeStoreImpl()); if (services.get(ClassTransformer.class) == null) { throw new IllegalStateException(ClassTransformer.class.getSimpleName() + " not installed."); } services.add( MemberTransformer.class, new MemberTransformer(services.get(ClassTransformer.class))); services.add( MetaAnnotationStore.class, new MetaAnnotationStore(services.get(ClassTransformer.class))); BeanIdentifierIndex beanIdentifierIndex = null; if (configuration.getBooleanProperty(ConfigurationKey.BEAN_IDENTIFIER_INDEX_OPTIMIZATION)) { beanIdentifierIndex = new BeanIdentifierIndex(); services.add(BeanIdentifierIndex.class, beanIdentifierIndex); } services.add(ContextualStore.class, new ContextualStoreImpl(contextId, beanIdentifierIndex)); services.add(CurrentInjectionPoint.class, new CurrentInjectionPoint()); services.add(CurrentEventMetadata.class, new CurrentEventMetadata()); services.add( SpecializationAndEnablementRegistry.class, new SpecializationAndEnablementRegistry()); services.add(MissingDependenciesRegistry.class, new MissingDependenciesRegistry()); /* * Setup ExecutorServices */ ExecutorServices executor = services.get(ExecutorServices.class); if (executor == null) { executor = ExecutorServicesFactory.create(DefaultResourceLoader.INSTANCE, configuration); if (executor != null) { services.add(ExecutorServices.class, executor); } } services.add( RequiredAnnotationDiscovery.class, new RequiredAnnotationDiscovery(services.get(ReflectionCache.class))); services.add(GlobalEnablementBuilder.class, new GlobalEnablementBuilder()); if (!services.contains(HttpContextActivationFilter.class)) { services.add( HttpContextActivationFilter.class, AcceptingHttpContextActivationFilter.INSTANCE); } services.add(ProtectionDomainCache.class, new ProtectionDomainCache()); services.add(ProxyInstantiator.class, ProxyInstantiator.Factory.create(configuration)); services.add(ObserverNotifierFactory.class, DefaultObserverNotifierFactory.INSTANCE); services.add(ResourceInjectionFactory.class, new ResourceInjectionFactory()); modules.postServiceRegistration(contextId, services); /* * Setup Validator */ if (configuration.getBooleanProperty(ConfigurationKey.CONCURRENT_DEPLOYMENT) && services.contains(ExecutorServices.class)) { services.add( Validator.class, new ConcurrentValidator(modules.getPluggableValidators(), executor)); } else { services.add(Validator.class, new Validator(modules.getPluggableValidators())); } GlobalObserverNotifierService observerNotificationService = new GlobalObserverNotifierService(services, contextId); services.add(GlobalObserverNotifierService.class, observerNotificationService); /* * Preloader for container lifecycle events */ ContainerLifecycleEventPreloader preloader = null; int preloaderThreadPoolSize = configuration.getIntegerProperty(ConfigurationKey.PRELOADER_THREAD_POOL_SIZE); if (preloaderThreadPoolSize > 0 && Permissions.hasPermission(Permissions.MODIFY_THREAD_GROUP)) { preloader = new ContainerLifecycleEventPreloader( preloaderThreadPoolSize, observerNotificationService.getGlobalLenientObserverNotifier()); } services.add( ContainerLifecycleEvents.class, new ContainerLifecycleEvents(preloader, services.get(RequiredAnnotationDiscovery.class))); if (isEEModulesAwareEnvironment()) { services.add(BeanDeploymentModules.class, new BeanDeploymentModules(contextId, services)); } }