Author: struberg
Date: Thu Jun 15 20:36:18 2017
New Revision: 1798874

URL: http://svn.apache.org/viewvc?rev=1798874&view=rev
Log:
OWB-1182 verify stereotypes of custom BeanAttributes

Modified:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1798874&r1=1798873&r2=1798874&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
 Thu Jun 15 20:36:18 2017
@@ -439,16 +439,29 @@ public class BeansDeployer
                 {
                     if (isEjb || (ClassUtil.isConcrete(beanClass) || 
WebBeansUtil.isDecorator(at)) && isValidManagedBean(at))
                     {
-                        final BeanAttributesImpl tBeanAttributes = 
BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(at, 
onlyScopedBeans).build();
-                        if (tBeanAttributes != null &&
-                                (!tBeanAttributes.isAlternative() || 
webBeansContext.getAlternativesManager()
-                                        .isAlternative(at.getJavaClass(), 
tBeanAttributes.getStereotypes())))
+                        final BeanAttributesImpl beanAttributes = 
BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(at, 
onlyScopedBeans).build();
+                        if (beanAttributes != null &&
+                                (!beanAttributes.isAlternative() || 
webBeansContext.getAlternativesManager()
+                                        .isAlternative(at.getJavaClass(), 
beanAttributes.getStereotypes())))
                         {
                             final ProcessBeanAttributesImpl<?> 
processBeanAttributes
-                                = 
webBeansContext.getWebBeansUtil().fireProcessBeanAttributes(at, 
at.getJavaClass(), tBeanAttributes);
+                                = 
webBeansContext.getWebBeansUtil().fireProcessBeanAttributes(at, 
at.getJavaClass(), beanAttributes);
                             if (processBeanAttributes != null)
                             {
-                                bdaBeanAttributes.put(at, new 
ExtendedBeanAttributes(processBeanAttributes.getAttributes(), isEjb, 
processBeanAttributes.isIgnoreFinalMethods()));
+                                BeanAttributes<?> newBeanAttributes = 
processBeanAttributes.getAttributes();
+                                if (beanAttributes != newBeanAttributes)
+                                {
+                                    // check stereotypes
+                                    for (Class<? extends Annotation> 
stereotype : newBeanAttributes.getStereotypes())
+                                    {
+                                        if 
(!webBeansContext.getBeanManagerImpl().isStereotype((stereotype)))
+                                        {
+                                            throw new 
WebBeansConfigurationException("Custom BeanAttributes#getStereotypes() must 
only contain Stereotypes!");
+                                        }
+                                    }
+                                }
+
+                                bdaBeanAttributes.put(at, new 
ExtendedBeanAttributes(newBeanAttributes, isEjb, 
processBeanAttributes.isIgnoreFinalMethods()));
                             }
                         }
                     }


Reply via email to