You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2017/05/30 13:07:17 UTC

svn commit: r1796858 - /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java

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.
      */