Author: struberg
Date: Tue May 30 13:07:17 2017
New Revision: 1796858

URL: http://svn.apache.org/viewvc?rev=1796858&view=rev
Log:
OWB-1182 fix Stereotype checks

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=1796858&r1=1796857&r2=1796858&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
 Tue May 30 13:07:17 2017
@@ -278,7 +278,7 @@ public class BeansDeployer
 
 
                 //Checking stereotype conditions
-                checkStereoTypes(scanner);
+                checkStereoTypes(beanAttributesPerBda);
 
                 // Handle Specialization
                 specializationUtil.removeDisabledBeanAttributes(
@@ -1581,25 +1581,31 @@ public class BeansDeployer
 
     /**
      * Check steretypes.
-     * @param scanner scanner instance
      */
-    protected void checkStereoTypes(ScannerService scanner)
+    protected void checkStereoTypes(Map<BeanArchiveInformation, 
Map<AnnotatedType<?>, ExtendedBeanAttributes<?>>> beanAttributesPerBda)
     {
         logger.fine("Checking StereoType constraints has started.");
 
         addDefaultStereoTypes();
 
-        final AnnotationManager annotationManager = 
webBeansContext.getAnnotationManager();
-        
-        Set<Class<?>> beanClasses = scanner.getBeanClasses();
-        if (beanClasses != null && beanClasses.size() > 0)
+        AnnotationManager annotationManager = 
webBeansContext.getAnnotationManager();
+        StereoTypeManager stereoTypeManager = 
webBeansContext.getStereoTypeManager();
+
+        // all the Stereotypes we did already check
+        Set<Class<? extends Annotation>> verifiedStereotypes = new HashSet<>();
+
+        for (Map<AnnotatedType<?>, ExtendedBeanAttributes<?>> 
annotatedTypeExtendedBeanAttributesMap : beanAttributesPerBda.values())
         {
-            final StereoTypeManager stereoTypeManager = 
webBeansContext.getStereoTypeManager();
-            for(Class<?> beanClass : beanClasses)
-            {                
-                if(beanClass.isAnnotation())
+            for (ExtendedBeanAttributes<?> extendedBeanAttributes : 
annotatedTypeExtendedBeanAttributesMap.values())
+            {
+                Set<Class<? extends Annotation>> stereotypes = 
extendedBeanAttributes.beanAttributes.getStereotypes();
+
+                for (Class<? extends Annotation> stereoClass : stereotypes)
                 {
-                    Class<? extends Annotation> stereoClass = (Class<? extends 
Annotation>) beanClass;
+                    if (verifiedStereotypes.contains(stereoClass))
+                    {
+                        continue;
+                    }
                     if (annotationManager.isStereoTypeAnnotation(stereoClass)
                         && 
stereoTypeManager.getStereoTypeModel(stereoClass.getName()) == null)
                     {
@@ -1607,6 +1613,7 @@ public class BeansDeployer
                         StereoTypeModel model = new 
StereoTypeModel(webBeansContext, stereoClass);
                         stereoTypeManager.addStereoTypeModel(model);
                     }
+                    verifiedStereotypes.add(stereoClass);
                 }
             }
         }
@@ -1614,6 +1621,7 @@ public class BeansDeployer
         logger.fine("Checking StereoType constraints has ended.");
     }
 
+
     /**
      * Adds default stereotypes.
      */


Reply via email to