private void flushCaches() { deploymentManager.getBeanResolver().clear(); deploymentManager.getAccessibleLenientObserverNotifier().clear(); deploymentManager.getGlobalStrictObserverNotifier().clear(); deploymentManager.getGlobalLenientObserverNotifier().clear(); deploymentManager.getDecoratorResolver().clear(); deploymentManager.getInterceptorResolver().clear(); deploymentManager.getNameBasedResolver().clear(); for (BeanDeployment beanDeployment : getBeanDeployments()) { BeanManagerImpl beanManager = beanDeployment.getBeanManager(); beanManager.getBeanResolver().clear(); beanManager.getAccessibleLenientObserverNotifier().clear(); beanManager.getDecoratorResolver().clear(); beanManager.getInterceptorResolver().clear(); beanManager.getNameBasedResolver().clear(); } }
this.beanResolver = new TypeSafeBeanResolver(this, createDynamicAccessibleIterable(beanTransform)); this.decoratorResolver = new TypeSafeDecoratorResolver(this, createDynamicGlobalIterable(Transform.DECORATOR)); this.interceptorResolver = new TypeSafeInterceptorResolver(this, createDynamicGlobalIterable(Transform.INTERCEPTOR)); this.nameBasedResolver = new NameBasedResolver(this, createDynamicAccessibleIterable(beanTransform)); this.weldELResolver = new WeldELResolver(this); this.childActivities = new CopyOnWriteArraySet<BeanManagerImpl>(); TypeSafeObserverResolver accessibleObserverResolver = new TypeSafeObserverResolver(getServices().get(MetaAnnotationStore.class), createDynamicAccessibleIterable(Transform.OBSERVER), getServices().get(WeldConfiguration.class)); this.accessibleLenientObserverNotifier = ObserverNotifier.of(contextId, accessibleObserverResolver, getServices(), false); GlobalObserverNotifierService globalObserverNotifierService = services.get(GlobalObserverNotifierService.class); this.globalLenientObserverNotifier = globalObserverNotifierService.getGlobalLenientObserverNotifier();
public void addInterceptor(Interceptor<?> bean) { interceptors.add(bean); getServices().get(ContextualStore.class).putIfAbsent(bean); interceptorResolver.clear(); }
@Override protected boolean matches(InterceptorResolvable resolvable, Interceptor<?> bean) { return bean.intercepts(resolvable.getInterceptionType()) && bean.getInterceptorBindings().size() > 0 && Beans.containsAllInterceptionBindings(bean.getInterceptorBindings(), resolvable.getQualifiers(), getManager()) && manager.getEnabled().isInterceptorEnabled(bean.getBeanClass()); }
/** * Resolves a list of interceptors based on interception type and interceptor bindings. Transitive interceptor bindings of the interceptor bindings passed * as a parameter are NOT considered in the resolution process. Therefore, the caller is responsible for filtering of transitive interceptor bindings in * order to comply with interceptor binding inheritance and overriding (See JSR-346 9.5.2). This is a Weld-specific method. * * @param type The interception type to resolve * @param interceptorBindings The binding types to match * @return A list of matching interceptors */ public List<Interceptor<?>> resolveInterceptors(InterceptionType type, Collection<Annotation> interceptorBindings) { // We can always cache as this is only ever called by Weld where we avoid non-static inner classes for annotation literals InterceptorResolvable interceptorResolvable = new InterceptorResolvableBuilder(Object.class, this).setInterceptionType(type) .addQualifiers(interceptorBindings).create(); return interceptorResolver.resolve(interceptorResolvable, isCacheable(interceptorBindings)); }
this.beanResolver = new TypeSafeBeanResolver(this, createDynamicAccessibleIterable(beanTransform)); this.decoratorResolver = new TypeSafeDecoratorResolver(this, createDynamicGlobalIterable(BeanManagerImpl::getDecorators)); this.interceptorResolver = new TypeSafeInterceptorResolver(this, createDynamicGlobalIterable(BeanManagerImpl::getInterceptors)); this.nameBasedResolver = new NameBasedResolver(this, createDynamicAccessibleIterable(beanTransform)); this.weldELResolver = services.getOptional(ExpressionLanguageSupport.class).map(el -> el.createElResolver(this)).orElse(null);
public void addInterceptor(Interceptor<?> bean) { interceptors.add(bean); getServices().get(ContextualStore.class).putIfAbsent(bean); interceptorResolver.clear(); }
@Override protected boolean matches(InterceptorResolvable resolvable, Interceptor<?> bean) { return bean.intercepts(resolvable.getInterceptionType()) && Beans.containsAllInterceptionBindings(bean.getInterceptorBindings(), resolvable.getQualifiers(), getManager()) && manager.getEnabled().isInterceptorEnabled(bean.getBeanClass()); }
/** * Resolves a list of interceptors based on interception type and interceptor bindings. Transitive interceptor bindings of the interceptor bindings passed * as a parameter are NOT considered in the resolution process. Therefore, the caller is responsible for filtering of transitive interceptor bindings in * order to comply with interceptor binding inheritance and overriding (See JSR-346 9.5.2). This is a Weld-specific method. * * @param type The interception type to resolve * @param interceptorBindings The binding types to match * @return A list of matching interceptors */ public List<Interceptor<?>> resolveInterceptors(InterceptionType type, Collection<Annotation> interceptorBindings) { // We can always cache as this is only ever called by Weld where we avoid non-static inner classes for annotation literals InterceptorResolvable interceptorResolvable = new InterceptorResolvableBuilder(Object.class, this).setInterceptionType(type) .addQualifiers(interceptorBindings).create(); return interceptorResolver.resolve(interceptorResolvable, isCacheable(interceptorBindings)); }
private void flushCaches() { deploymentManager.getBeanResolver().clear(); deploymentManager.getAccessibleLenientObserverNotifier().clear(); deploymentManager.getGlobalStrictObserverNotifier().clear(); deploymentManager.getGlobalLenientObserverNotifier().clear(); deploymentManager.getDecoratorResolver().clear(); deploymentManager.getInterceptorResolver().clear(); deploymentManager.getNameBasedResolver().clear(); for (BeanDeployment beanDeployment : getBeanDeployments()) { BeanManagerImpl beanManager = beanDeployment.getBeanManager(); beanManager.getBeanResolver().clear(); beanManager.getAccessibleLenientObserverNotifier().clear(); beanManager.getDecoratorResolver().clear(); beanManager.getInterceptorResolver().clear(); beanManager.getNameBasedResolver().clear(); } }
this.beanResolver = new TypeSafeBeanResolver(this, createDynamicAccessibleIterable(beanTransform)); this.decoratorResolver = new TypeSafeDecoratorResolver(this, createDynamicGlobalIterable(BeanManagerImpl::getDecorators)); this.interceptorResolver = new TypeSafeInterceptorResolver(this, createDynamicGlobalIterable(BeanManagerImpl::getInterceptors)); this.nameBasedResolver = new NameBasedResolver(this, createDynamicAccessibleIterable(beanTransform)); this.weldELResolver = services.getOptional(ExpressionLanguageSupport.class).map(el -> el.createElResolver(this)).orElse(null);
public void addInterceptor(Interceptor<?> bean) { interceptors.add(bean); getServices().get(ContextualStore.class).putIfAbsent(bean); interceptorResolver.clear(); }
@Override protected boolean matches(InterceptorResolvable resolvable, Interceptor<?> bean) { return bean.intercepts(resolvable.getInterceptionType()) && Beans.containsAllInterceptionBindings(bean.getInterceptorBindings(), resolvable.getQualifiers(), getManager()) && manager.getEnabled().isInterceptorEnabled(bean.getBeanClass()); }
/** * Resolves a list of interceptors based on interception type and interceptor bindings. Transitive interceptor bindings of the interceptor bindings passed * as a parameter are NOT considered in the resolution process. Therefore, the caller is responsible for filtering of transitive interceptor bindings in * order to comply with interceptor binding inheritance and overriding (See JSR-346 9.5.2). This is a Weld-specific method. * * @param type The interception type to resolve * @param interceptorBindings The binding types to match * @return A list of matching interceptors */ public List<Interceptor<?>> resolveInterceptors(InterceptionType type, Collection<Annotation> interceptorBindings) { // We can always cache as this is only ever called by Weld where we avoid non-static inner classes for annotation literals InterceptorResolvable interceptorResolvable = new InterceptorResolvableBuilder(Object.class, this).setInterceptionType(type) .addQualifiers(interceptorBindings).create(); return interceptorResolver.resolve(interceptorResolvable, isCacheable(interceptorBindings)); }
private void flushCaches() { deploymentManager.getBeanResolver().clear(); deploymentManager.getAccessibleLenientObserverNotifier().clear(); deploymentManager.getGlobalStrictObserverNotifier().clear(); deploymentManager.getGlobalLenientObserverNotifier().clear(); deploymentManager.getDecoratorResolver().clear(); deploymentManager.getInterceptorResolver().clear(); deploymentManager.getNameBasedResolver().clear(); for (BeanDeployment beanDeployment : getBeanDeployments()) { BeanManagerImpl beanManager = beanDeployment.getBeanManager(); beanManager.getBeanResolver().clear(); beanManager.getAccessibleLenientObserverNotifier().clear(); beanManager.getDecoratorResolver().clear(); beanManager.getInterceptorResolver().clear(); beanManager.getNameBasedResolver().clear(); } }
this.beanResolver = new TypeSafeBeanResolver(this, createDynamicAccessibleIterable(beanTransform)); this.decoratorResolver = new TypeSafeDecoratorResolver(this, createDynamicGlobalIterable(BeanManagerImpl::getDecorators)); this.interceptorResolver = new TypeSafeInterceptorResolver(this, createDynamicGlobalIterable(BeanManagerImpl::getInterceptors)); this.nameBasedResolver = new NameBasedResolver(this, createDynamicAccessibleIterable(beanTransform)); this.weldELResolver = services.getOptional(ExpressionLanguageSupport.class).map(el -> el.createElResolver(this)).orElse(null);