use of org.jboss.weld.bean.proxy.ProtectionDomainCache in project core by weld.
the class WeldStartup method addImplementationServices.
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 (environment.isEEModulesAware()) {
services.add(BeanDeploymentModules.class, new BeanDeploymentModules(contextId, services));
}
}
Aggregations