You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2013/05/27 15:37:23 UTC

svn commit: r1486620 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: config/BeansDeployer.java util/WebBeansUtil.java

Author: rmannibucau
Date: Mon May 27 13:37:22 2013
New Revision: 1486620

URL: http://svn.apache.org/r1486620
Log:
OWB-867 don't log classes without constructor when not mandatory

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.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=1486620&r1=1486619&r2=1486620&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 Mon May 27 13:37:22 2013
@@ -69,6 +69,7 @@ import org.apache.webbeans.util.WebBeans
 import org.apache.webbeans.util.WebBeansUtil;
 import org.apache.webbeans.xml.WebBeansXMLConfigurator;
 
+import javax.enterprise.context.NormalScope;
 import javax.enterprise.inject.Model;
 import javax.enterprise.inject.Specializes;
 import javax.enterprise.inject.spi.AnnotatedField;
@@ -604,29 +605,60 @@ public class BeansDeployer
             defineEnterpriseWebBean((Class<Object>) implClass, (ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
         }
         else if((ClassUtil.isConcrete(beanClass) || WebBeansUtil.isDecorator(processAnnotatedEvent.getAnnotatedType())) &&
-                isValidManagedBean(beanClass))
+                isValidManagedBean(processAnnotatedEvent.getAnnotatedType()))
         {
             defineManagedBean(processAnnotatedEvent);
         }
     }
 
-    private boolean isValidManagedBean(Class beanClass)
+    private boolean isValidManagedBean(final AnnotatedType<?> type)
     {
+        final Class<?> beanClass = type.getJavaClass();
+        final WebBeansUtil webBeansUtil = webBeansContext.getWebBeansUtil();
+
+        // done separately to be able to swallow the logging when not relevant and avoid to pollute logs
+        if (!webBeansUtil.isConstructorOk(beanClass))
+        {
+            if (isNormalScoped(type))
+            {
+                logger.info("Bean implementation class : " + beanClass.getName() + " must define at least one Constructor");
+            } // else not an issue
+            return false;
+        }
+
         try
         {
-            webBeansContext.getWebBeansUtil().checkManagedBean(beanClass);
+            webBeansUtil.checkManagedBean(beanClass);
         }
-        catch (DefinitionException e)
+        catch (final DefinitionException e)
         {
             logger.info("skipped deployment of: " + beanClass.getName() + " reason: " + e.getMessage());
             logger.log(Level.FINER, "skipped deployment of: " + beanClass.getName() + " details: ", e);
             return false;
         }
         //we are not allowed to catch possible exceptions thrown by the following method
-        webBeansContext.getWebBeansUtil().checkManagedBeanCondition(beanClass);
+        webBeansUtil.checkManagedBeanCondition(beanClass);
         return true;
     }
 
+    private static boolean isNormalScoped(final AnnotatedType<?> type)
+    {
+        final Set<Annotation> annotations = type.getAnnotations();
+        if (annotations != null)
+        {
+            for (final Annotation a : annotations)
+            {
+                if (AnnotationUtil.hasMetaAnnotation(a.annotationType().getAnnotations(), NormalScope.class)
+                        || AnnotationUtil.hasAnnotation(a.annotationType().getAnnotations(), NormalScope.class))
+                {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
     /**
      * Discovers and deploys alternatives, interceptors and decorators from XML.
      * 

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1486620&r1=1486619&r2=1486620&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java Mon May 27 13:37:22 2013
@@ -276,12 +276,6 @@ public final class WebBeansUtil
                                                      + clazz.getName() + " can not be non-static inner class");
         }
 
-        if (!isConstructorOk(clazz))
-        {
-            throw new WebBeansConfigurationException("Bean implementation class : " + clazz.getName()
-                                                     + " must define at least one Constructor");
-        }
-
         if(Extension.class.isAssignableFrom(clazz))
         {
             throw new WebBeansConfigurationException("Bean implementation class can not implement "