private void validateEnabledAlternativeStereotypes(BeanManagerImpl beanManager, BeanDeployment deployment) { BeansXml beansXml = deployment.getBeanDeploymentArchive().getBeansXml(); if (beansXml != null && !beansXml.getEnabledAlternativeStereotypes().isEmpty()) { // prepare lookup structure Map<String, Class<? extends Annotation>> loadedStereotypes = buildClassNameMap(beanManager.getEnabled().getAlternativeStereotypes()); for (Metadata<String> definition : beansXml.getEnabledAlternativeStereotypes()) { Class<? extends Annotation> stereotype = loadedStereotypes.get(definition.getValue()); if (!beanManager.isStereotype(stereotype)) { throw ValidatorLogger.LOG.alternativeStereotypeNotStereotype(definition); } if (!isAlternativeStereotype(beanManager, stereotype)) { throw ValidatorLogger.LOG.alternativeStereotypeNotAnnotated(definition); } } } }
private void validateEnabledInterceptorClasses(BeanManagerImpl beanManager, BeanDeployment deployment) { BeansXml beansXml = deployment.getBeanDeploymentArchive().getBeansXml(); if (beansXml != null && !beansXml.getEnabledInterceptors().isEmpty()) { Set<String> interceptorBeanClasses = new HashSet<String>(); for (Interceptor<?> interceptor : beanManager.getDynamicAccessibleInterceptors()) { interceptorBeanClasses.add(interceptor.getBeanClass().getName()); } for (Metadata<String> interceptorClassName : beansXml.getEnabledInterceptors()) { if (!interceptorBeanClasses.contains(interceptorClassName.getValue())) { throw ValidatorLogger.LOG.interceptorClassDoesNotMatchInterceptorBean(interceptorClassName.getValue(), interceptorClassName.getLocation()); } } } }
@Override public Class<?> apply(Metadata<String> from) { try { return resourceLoader.classForName(from.getValue()); } catch (ResourceLoadingException e) { throw BootstrapLogger.LOG.errorLoadingBeansXmlEntry(from.getValue(), from.getLocation(), e.getCause()); } catch (Exception e) { throw BootstrapLogger.LOG.errorLoadingBeansXmlEntry(from.getValue(), from.getLocation(), e); } } }
AnnotationApiAbstraction annotationApi = beanManager.getServices().get(AnnotationApiAbstraction.class); JsonObjectBuilder deploymentBuilder = Json.objectBuilder(); deploymentBuilder.add(CONTEXT_ID, beanManager.getContextId()); Collections.sort(bdas, probe.getBdaComparator()); for (BeanDeploymentArchive bda : bdas) { JsonObjectBuilder bdaBuilder = createSimpleBdaJson(bda.getId()); BeansXml beansXml = bda.getBeansXml(); bdaBuilder.add(BEAN_DISCOVERY_MODE, beansXml != null ? beansXml.getBeanDiscoveryMode().toString() : BeanDiscoveryMode.ANNOTATED.toString()); ModuleEnablement enablement = beanDeploymentArchivesMap.get(bda).getEnabled(); JsonArrayBuilder interceptors = Json.arrayBuilder(); for (Class<?> interceptor : Components.getSortedProbeComponetCandidates(enablement.getInterceptors())) { if (beansXml != null) { for (Metadata<String> meta : beansXml.getEnabledInterceptors()) { if (meta.getValue().equals(interceptorBean.getBeanClass().getName())) { if (beansXml != null) { for (Metadata<String> meta : beansXml.getEnabledDecorators()) { if (meta.getValue().equals(decoratorBean.getBeanClass().getName())) {
private void validateEnabledAlternativeClasses(BeanManagerImpl beanManager, BeanDeployment deployment) { BeansXml beansXml = deployment.getBeanDeploymentArchive().getBeansXml(); if (beansXml != null && !beansXml.getEnabledAlternativeClasses().isEmpty()) { // prepare lookup structure Map<String, Class<?>> loadedClasses = buildClassNameMap(beanManager.getEnabled().getAlternativeClasses()); // lookup structure for validation of alternatives Multimap<Class<?>, Bean<?>> beansByClass = SetMultimap.newSetMultimap(); for (Bean<?> bean : beanManager.getDynamicAccessibleBeans()) { if (!(bean instanceof NewBean)) { beansByClass.put(bean.getBeanClass(), bean); } } for (Metadata<String> definition : beansXml.getEnabledAlternativeClasses()) { Class<?> enabledClass = loadedClasses.get(definition.getValue()); if (enabledClass.isAnnotation() || enabledClass.isInterface()) { throw ValidatorLogger.LOG.alternativeBeanClassNotClass(definition); } else { if (!isAlternativeBean(enabledClass, beansByClass) && !isAlternativeCandidate(enabledClass, beanManager)) { throw ValidatorLogger.LOG.alternativeBeanClassNotAnnotated(definition.getValue(), definition.getLocation()); } } } } }
List<String> getLocalEnablementOfBean(Class<?> clazz) { List<String> localEnablementBDAIds = new ArrayList<>(); for (Entry<BeanDeploymentArchive, BeanManagerImpl> entry : bdaToManager.entrySet()) { BeansXml beansXml = entry.getKey().getBeansXml(); if (beansXml != null) { if (beansXml.getEnabledDecorators() != null && !beansXml.getEnabledDecorators().isEmpty()) { for (Metadata<String> metadata : entry.getKey().getBeansXml().getEnabledDecorators()) { if (metadata.getValue().equals(clazz.getName())) { localEnablementBDAIds.add(entry.getKey().getId()); } } } if (beansXml.getEnabledInterceptors() != null && !beansXml.getEnabledInterceptors().isEmpty()) { for (Metadata<String> metadata : entry.getKey().getBeansXml().getEnabledInterceptors()) { if (metadata.getValue().equals(clazz.getName())) { localEnablementBDAIds.add(entry.getKey().getId()); } } } } } return localEnablementBDAIds; }
private void validateEnabledDecoratorClasses(BeanManagerImpl beanManager, BeanDeployment deployment) { BeansXml beansXml = deployment.getBeanDeploymentArchive().getBeansXml(); if (beansXml != null && !beansXml.getEnabledDecorators().isEmpty()) { Set<String> decoratorBeanClasses = new HashSet<String>(); for (Decorator<?> bean : beanManager.getDynamicAccessibleDecorators()) { decoratorBeanClasses.add(bean.getBeanClass().getName()); } for (Metadata<String> decoratorClassName : beansXml.getEnabledDecorators()) { if (!decoratorBeanClasses.contains(decoratorClassName.getValue())) { throw ValidatorLogger.LOG.decoratorClassNotBeanClassOfDecorator(decoratorClassName.getValue(), WeldCollections.toMultiRowString(decoratorBeanClasses)); } } } }
private <E extends Extension> EnhancedAnnotatedType<E> getEnhancedAnnotatedType(ClassTransformer classTransformer, Metadata<E> extension, BeanDeployment beanDeployment) { Class<? extends Extension> clazz = extension.getValue().getClass(); try { return cast(classTransformer.getEnhancedAnnotatedType(clazz, beanDeployment.getBeanDeploymentArchive().getId())); } catch (ResourceLoadingException e) { String missingDependency = Formats.getNameOfMissingClassLoaderDependency(e); BootstrapLogger.LOG.ignoringExtensionClassDueToLoadingError(clazz.getName(), missingDependency); BootstrapLogger.LOG.catchingDebug(e); missingDependenciesRegistry.registerClassWithMissingDependency(clazz.getName(), missingDependency); return null; } }
@Override public E create(CreationalContext<E> creationalContext) { return instance.getValue(); }
private <E extends Extension> void deployBean(Metadata<E> extension, ClassTransformer classTransformer) { // Locate the BeanDeployment for this extension BeanDeployment beanDeployment = DeploymentStructures.getOrCreateBeanDeployment(deployment, beanManager, bdaMapping, contexts, extension.getValue() .getClass()); // Do not register synthetic extension as a bean, only register container lifecycle observer methods if (extension.getValue() instanceof SyntheticExtension) { SyntheticExtension synthetic = (SyntheticExtension) extension.getValue(); synthetic.initialize(beanDeployment.getBeanManager()); for (ObserverMethod<?> observer : synthetic.getObservers()) { beanDeployment.getBeanManager().addObserver(observer); containerLifecycleEventObservers.processObserverMethod(observer); } return; } EnhancedAnnotatedType<E> enchancedAnnotatedType = getEnhancedAnnotatedType(classTransformer, extension, beanDeployment); if (enchancedAnnotatedType != null) { ExtensionBean<E> bean = new ExtensionBean<E>(beanDeployment.getBeanManager(), enchancedAnnotatedType, extension); Set<ObserverInitializationContext<?, ?>> observerMethodInitializers = new HashSet<ObserverInitializationContext<?, ?>>(); createObserverMethods(bean, beanDeployment.getBeanManager(), enchancedAnnotatedType, observerMethodInitializers); beanDeployment.getBeanManager().addBean(bean); beanDeployment.getBeanDeployer().addExtension(bean); for (ObserverInitializationContext<?, ?> observerMethodInitializer : observerMethodInitializers) { observerMethodInitializer.initialize(); beanDeployment.getBeanManager().addObserver(observerMethodInitializer.getObserver()); containerLifecycleEventObservers.processObserverMethod(observerMethodInitializer.getObserver()); } BootstrapLogger.LOG.extensionBeanDeployed(bean); } }
@Override public List<String> getDecorators() { List<String> decorators = new ArrayList<>(); for (Metadata<String> decorator : model.getEnabledDecorators()) { decorators.add(decorator.getValue()); } return decorators; }
@Override public List<String> getInterceptors() { List<String> interceptors = new ArrayList<>(); for (Metadata<String> interceptor : model.getEnabledInterceptors()) { interceptors.add(interceptor.getValue()); } return interceptors; }
@Override public List<String> getAlternativeClasses() { List<String> klasses = new ArrayList<>(); for (Metadata<String> klass : model.getEnabledAlternativeClasses()) { klasses.add(klass.getValue()); } return klasses; }
@Override public List<String> getAlternativeStereotypes() { List<String> stereotypes = new ArrayList<>(); for (Metadata<String> stereotype : model.getEnabledAlternativeStereotypes()) { stereotypes.add(stereotype.getValue()); } return stereotypes; }
@Override public String toString() { return "Extension [" + getType().toString() + "] with qualifiers [@Default]; " + instance.getLocation(); } }
AnnotationApiAbstraction annotationApi = beanManager.getServices().get(AnnotationApiAbstraction.class); JsonObjectBuilder deploymentBuilder = Json.objectBuilder(); deploymentBuilder.add(CONTEXT_ID, beanManager.getContextId()); Collections.sort(bdas, probe.getBdaComparator()); for (BeanDeploymentArchive bda : bdas) { JsonObjectBuilder bdaBuilder = createSimpleBdaJson(bda.getId()); BeansXml beansXml = bda.getBeansXml(); bdaBuilder.add(BEAN_DISCOVERY_MODE, beansXml != null ? beansXml.getBeanDiscoveryMode().toString() : BeanDiscoveryMode.ANNOTATED.toString()); ModuleEnablement enablement = beanDeploymentArchivesMap.get(bda).getEnabled(); JsonArrayBuilder interceptors = Json.arrayBuilder(); for (Class<?> interceptor : Components.getSortedProbeComponetCandidates(enablement.getInterceptors())) { if (beansXml != null) { for (Metadata<String> meta : beansXml.getEnabledInterceptors()) { if (meta.getValue().equals(interceptorBean.getBeanClass().getName())) { if (beansXml != null) { for (Metadata<String> meta : beansXml.getEnabledDecorators()) { if (meta.getValue().equals(decoratorBean.getBeanClass().getName())) {
private void validateEnabledAlternativeClasses(BeanManagerImpl beanManager, BeanDeployment deployment) { BeansXml beansXml = deployment.getBeanDeploymentArchive().getBeansXml(); if (beansXml != null && !beansXml.getEnabledAlternativeClasses().isEmpty()) { // prepare lookup structure Map<String, Class<?>> loadedClasses = buildClassNameMap(beanManager.getEnabled().getAlternativeClasses()); // lookup structure for validation of alternatives Multimap<Class<?>, Bean<?>> beansByClass = SetMultimap.newSetMultimap(); for (Bean<?> bean : beanManager.getDynamicAccessibleBeans()) { if (!(bean instanceof NewBean)) { beansByClass.put(bean.getBeanClass(), bean); } } for (Metadata<String> definition : beansXml.getEnabledAlternativeClasses()) { Class<?> enabledClass = loadedClasses.get(definition.getValue()); if (enabledClass.isAnnotation() || enabledClass.isInterface()) { throw ValidatorLogger.LOG.alternativeBeanClassNotClass(definition); } else { if (!isAlternativeBean(enabledClass, beansByClass) && !isAlternativeCandidate(enabledClass, beanManager)) { throw ValidatorLogger.LOG.alternativeBeanClassNotAnnotated(definition.getValue(), definition.getLocation()); } } } } }
List<String> getLocalEnablementOfBean(Class<?> clazz) { List<String> localEnablementBDAIds = new ArrayList<>(); for (Entry<BeanDeploymentArchive, BeanManagerImpl> entry : bdaToManager.entrySet()) { BeansXml beansXml = entry.getKey().getBeansXml(); if (beansXml != null) { if (beansXml.getEnabledDecorators() != null && !beansXml.getEnabledDecorators().isEmpty()) { for (Metadata<String> metadata : entry.getKey().getBeansXml().getEnabledDecorators()) { if (metadata.getValue().equals(clazz.getName())) { localEnablementBDAIds.add(entry.getKey().getId()); } } } if (beansXml.getEnabledInterceptors() != null && !beansXml.getEnabledInterceptors().isEmpty()) { for (Metadata<String> metadata : entry.getKey().getBeansXml().getEnabledInterceptors()) { if (metadata.getValue().equals(clazz.getName())) { localEnablementBDAIds.add(entry.getKey().getId()); } } } } } return localEnablementBDAIds; }
private void validateEnabledDecoratorClasses(BeanManagerImpl beanManager, BeanDeployment deployment) { BeansXml beansXml = deployment.getBeanDeploymentArchive().getBeansXml(); if (beansXml != null && !beansXml.getEnabledDecorators().isEmpty()) { Set<String> decoratorBeanClasses = new HashSet<String>(); for (Decorator<?> bean : beanManager.getDynamicAccessibleDecorators()) { decoratorBeanClasses.add(bean.getBeanClass().getName()); } for (Metadata<String> decoratorClassName : beansXml.getEnabledDecorators()) { if (!decoratorBeanClasses.contains(decoratorClassName.getValue())) { throw ValidatorLogger.LOG.decoratorClassNotBeanClassOfDecorator(decoratorClassName.getValue(), WeldCollections.toMultiRowString(decoratorBeanClasses)); } } } }
private <E extends Extension> EnhancedAnnotatedType<E> getEnhancedAnnotatedType(ClassTransformer classTransformer, Metadata<E> extension, BeanDeployment beanDeployment) { Class<? extends Extension> clazz = extension.getValue().getClass(); try { return cast(classTransformer.getEnhancedAnnotatedType(clazz, beanDeployment.getBeanDeploymentArchive().getId())); } catch (ResourceLoadingException e) { String missingDependency = Formats.getNameOfMissingClassLoaderDependency(e); BootstrapLogger.LOG.ignoringExtensionClassDueToLoadingError(clazz.getName(), missingDependency); BootstrapLogger.LOG.catchingDebug(e); missingDependenciesRegistry.registerClassWithMissingDependency(clazz.getName(), missingDependency); return null; } }