public static void fire(BeanManagerImpl beanManager, Deployment deployment, BeanDeploymentArchiveMapping bdaMapping, Collection<ContextHolder<? extends Context>> contexts) { final AfterBeanDiscoveryImpl event = new AfterBeanDiscoveryImpl(beanManager, deployment, bdaMapping, contexts); event.fire(); event.finish(); }
@Override public void addContext(Context context) { checkWithinObserverNotification(); Preconditions.checkArgumentNotNull(context, "context"); Class<? extends Annotation> scope = context.getScope(); if (scope == null) { throw ContextLogger.LOG.contextHasNullScope(context); } if (!getBeanManager().isScope(scope)) { MetadataLogger.LOG.contextGetScopeIsNotAScope(scope, context); } if (scope == ApplicationScoped.class || scope == Dependent.class) { throw ContextLogger.LOG.cannotRegisterContext(scope, context); } getBeanManager().addContext(context); BootstrapLogger.LOG.addContext(getReceiver(), context); }
@Override public void addBean(Bean<?> bean) { checkWithinObserverNotification(); Preconditions.checkArgumentNotNull(bean, "bean"); ExternalBeanAttributesFactory.validateBeanAttributes(bean, getBeanManager()); validateBean(bean); additionalBeans.add(bean); BootstrapLogger.LOG.addBeanCalled(getReceiver(), bean); }
@Override public void addObserverMethod(ObserverMethod<?> observerMethod) { checkWithinObserverNotification(); Preconditions.checkArgumentNotNull(observerMethod, "observerMethod"); validateObserverMethod(observerMethod, getBeanManager()); additionalObservers.add(observerMethod); BootstrapLogger.LOG.addObserverMethodCalled(getReceiver(), observerMethod); }
public void deployBeans() { tracker.start(Tracker.OP_DEPLOY_BEANS); for (BeanDeployment deployment : getBeanDeployments()) { deployment.createBeans(environment); deployment.getBeanDeployer().processClassBeanAttributes(); deployment.getBeanDeployer().createProducersAndObservers(); AfterBeanDiscoveryImpl.fire(deploymentManager, deployment, bdaMapping, contexts); tracker.end(); beanDeployment.getBeanManager().getServices().get(InjectionTargetService.class).initialize(); beanDeployment.afterBeanDiscovery(environment);
if (beanManager == null) { beanManager = getOrCreateBeanDeployment(bean.getBeanClass()).getBeanManager(); } else { ExternalBeanAttributesFactory.validateBeanAttributes(bean, getBeanManager()); validateBean(bean); beanManager.addInterceptor((Interceptor<?>) bean); if (priority != null) { globalEnablementBuilder.addInterceptor(bean.getBeanClass(), priority); beanManager.addDecorator(CustomDecoratorWrapper.of((Decorator<?>) bean, beanManager)); if (priority != null) { globalEnablementBuilder.addDecorator(bean.getBeanClass(), priority); beanManager.addBean(bean); if (priority != null && bean.isAlternative()) { globalEnablementBuilder.addAlternative(bean.getBeanClass(), priority);
@Override public <T> AnnotatedType<T> getAnnotatedType(Class<T> type, String id) { checkWithinObserverNotification(); Preconditions.checkArgumentNotNull(type, TYPE_ARGUMENT_NAME); return slimAnnotatedTypeStore.get(type, id); }
private void processObserverRegistration(ObserverRegistration registration) { ObserverMethod<?> observerMethod = registration.initObserverMethod(); validateObserverMethod(observerMethod, getBeanManager(), null); BeanManagerImpl manager = getOrCreateBeanDeployment(observerMethod.getBeanClass()).getBeanManager(); if (Observers.isObserverMethodEnabled(observerMethod, manager)) { ObserverMethod<?> processedObserver = containerLifecycleEvents.fireProcessObserverMethod(manager, observerMethod, registration.extension); if (processedObserver != null) { manager.addObserver(processedObserver); } } }
/** * Bean and observer registration is delayed until after all {@link AfterBeanDiscovery} observers are notified. */ private void finish() { try { GlobalEnablementBuilder globalEnablementBuilder = getBeanManager().getServices().get(GlobalEnablementBuilder.class); for (BeanRegistration registration : additionalBeans) { processBeanRegistration(registration, globalEnablementBuilder); } for (ObserverRegistration registration : additionalObservers) { processObserverRegistration(registration); } } catch (Exception e) { throw new DefinitionException(e); } }
protected <T> void processBean(Bean<T> bean) { BeanManagerImpl beanManager = getOrCreateBeanDeployment(bean.getBeanClass()).getBeanManager(); if (bean instanceof Interceptor<?>) { beanManager.addInterceptor((Interceptor<?>) bean); } else if (bean instanceof Decorator<?>) { beanManager.addDecorator(CustomDecoratorWrapper.of((Decorator<?>) bean, beanManager)); } else { beanManager.addBean(bean); } containerLifecycleEvents.fireProcessBean(beanManager, bean); }
private void validateInterceptor(Interceptor<?> interceptor) { Set<Annotation> bindings = interceptor.getInterceptorBindings(); if (bindings == null) { throw InterceptorLogger.LOG.nullInterceptorBindings(interceptor); } for (Annotation annotation : bindings) { if (!getBeanManager().isInterceptorBinding(annotation.annotationType())) { throw MetadataLogger.LOG.notAnInterceptorBinding(annotation, interceptor); } } }
private BeanDeploymentFinder getBeanDeploymentFinder() { return new BeanDeploymentFinder(getBeanDeployments(), getDeployment(), getContexts(), getBeanManager()); }
@Override public <T> WeldBeanConfigurator<T> addBean() { checkWithinObserverNotification(); BeanConfiguratorImpl<T> configurator = new BeanConfiguratorImpl<>(getReceiver().getClass(), getBeanDeploymentFinder()); additionalBeans.add(BeanRegistration.of(configurator, getReceiver())); return configurator; }
/** * Bean and observer registration is delayed until after all {@link AfterBeanDiscovery} observers are notified. */ private void finish() { try { for (Bean<?> bean : additionalBeans) { processBean(bean); } for (ObserverMethod<?> observer : additionalObservers) { BeanManagerImpl manager = getOrCreateBeanDeployment(observer.getBeanClass()).getBeanManager(); if (Observers.isObserverMethodEnabled(observer, manager)) { ProcessObserverMethodImpl.fire(manager, observer); manager.addObserver(observer); } } } catch (Exception e) { throw new DefinitionException(e); } } }
private void validateBean(Bean<?> bean) { if (bean.getBeanClass() == null) { throw BeanLogger.LOG.beanMethodReturnsNull("getBeanClass", bean); } if (bean.getInjectionPoints() == null) { throw BeanLogger.LOG.beanMethodReturnsNull("getInjectionPoints", bean); } if (bean instanceof PassivationCapable) { PassivationCapable passivationCapable = (PassivationCapable) bean; if (passivationCapable.getId() == null) { throw BeanLogger.LOG.passivationCapableBeanHasNullId(bean); } } if (bean instanceof Interceptor<?>) { validateInterceptor((Interceptor<?>) bean); } else if (bean instanceof Decorator<?>) { validateDecorator((Decorator<?>) bean); } }
@Override public <T> ObserverMethodConfigurator<T> addObserverMethod() { checkWithinObserverNotification(); ObserverMethodConfiguratorImpl<T> configurator = new ObserverMethodConfiguratorImpl<>(getReceiver()); additionalObservers.add(ObserverRegistration.of(configurator, getReceiver())); return configurator; }
@Override public InterceptorConfigurator addInterceptor() { InterceptorConfiguratorImpl configurator = new InterceptorConfiguratorImpl(getBeanManager()); additionalBeans.add(BeanRegistration.of(configurator)); return configurator; }
public void deployBeans() { tracker.start(Tracker.OP_DEPLOY_BEANS); for (BeanDeployment deployment : getBeanDeployments()) { deployment.createBeans(environment); deployment.getBeanDeployer().processClassBeanAttributes(); deployment.getBeanDeployer().createProducersAndObservers(); AfterBeanDiscoveryImpl.fire(deploymentManager, deployment, bdaMapping, contexts); tracker.end(); beanDeployment.getBeanManager().getServices().get(InjectionTargetService.class).initialize(); beanDeployment.afterBeanDiscovery(environment);
@Override public void addObserverMethod(ObserverMethod<?> observerMethod) { checkWithinObserverNotification(); Preconditions.checkArgumentNotNull(observerMethod, "observerMethod"); validateObserverMethod(observerMethod, getBeanManager(), null); additionalObservers.add(ObserverRegistration.of(observerMethod, getReceiver())); BootstrapLogger.LOG.addObserverMethodCalled(getReceiver(), observerMethod); }
if (beanManager == null) { beanManager = getOrCreateBeanDeployment(bean.getBeanClass()).getBeanManager(); } else { ExternalBeanAttributesFactory.validateBeanAttributes(bean, getBeanManager()); validateBean(bean); beanManager.addInterceptor((Interceptor<?>) bean); if (priority != null) { globalEnablementBuilder.addInterceptor(bean.getBeanClass(), priority); beanManager.addDecorator(CustomDecoratorWrapper.of((Decorator<?>) bean, beanManager)); if (priority != null) { globalEnablementBuilder.addDecorator(bean.getBeanClass(), priority); beanManager.addBean(bean); if (priority != null && bean.isAlternative()) { globalEnablementBuilder.addAlternative(bean.getBeanClass(), priority);