You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ar...@apache.org on 2013/01/05 19:00:21 UTC

svn commit: r1429342 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/component/ main/java/org/apache/webbeans/config/ main/java/org/apache/webbeans/util/ test/java/org/apache/webbeans/newtests/concepts/apiTypes/tests/ test/jav...

Author: arne
Date: Sat Jan  5 18:00:21 2013
New Revision: 1429342

URL: http://svn.apache.org/viewvc?rev=1429342&view=rev
Log:
OWB-745: Moved DefinitionUtil.defineApiTypes to tests

Removed:
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/concepts/apiTypes/tests/ApiTypeTest.java
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java?rev=1429342&r1=1429341&r2=1429342&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java Sat Jan  5 18:00:21 2013
@@ -21,6 +21,7 @@ package org.apache.webbeans.component;
 import javax.enterprise.context.spi.CreationalContext;
 
 import org.apache.webbeans.annotation.ApplicationScopeLiteral;
+import org.apache.webbeans.annotation.DefaultLiteral;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.portable.events.ExtensionLoader;
 
@@ -42,7 +43,10 @@ public class ExtensionBean<T> extends Ab
     public ExtensionBean(Class<T> returnType, WebBeansContext webBeansContext)
     {
         super(WebBeansType.EXTENSION, returnType, webBeansContext.getAnnotatedElementFactory().newAnnotatedType(returnType), webBeansContext);
+        setEnabled(true);
         setImplScopeType(new ApplicationScopeLiteral());
+        getTypes().addAll(getAnnotatedType().getTypeClosure());
+        addQualifier(new DefaultLiteral());
     }
     
     /**

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java?rev=1429342&r1=1429341&r2=1429342&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java Sat Jan  5 18:00:21 2013
@@ -22,15 +22,11 @@ import java.io.Serializable;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
-import java.lang.reflect.Type;
 import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
 import javax.enterprise.context.NormalScope;
-import javax.enterprise.inject.Typed;
 import javax.enterprise.inject.spi.InjectionPoint;
 import javax.enterprise.util.Nonbinding;
 import javax.inject.Named;
@@ -43,7 +39,6 @@ import org.apache.webbeans.annotation.De
 import org.apache.webbeans.annotation.NamedLiteral;
 import org.apache.webbeans.component.AbstractInjectionTargetBean;
 import org.apache.webbeans.component.AbstractOwbBean;
-import org.apache.webbeans.component.AbstractProducerBean;
 import org.apache.webbeans.component.EnterpriseBeanMarker;
 import org.apache.webbeans.component.InjectionTargetBean;
 import org.apache.webbeans.component.ManagedBean;
@@ -71,112 +66,6 @@ public final class DefinitionUtil
     {
         this.webBeansContext = webBeansContext;
     }
-    
-    /**
-     * Configures the web bean api types.
-     * 
-     * @param <T> generic class type
-     * @param bean configuring web beans component
-     * @param clazz bean implementation class
-     */
-    public static <T> void defineApiTypes(AbstractOwbBean<T> bean, Class<T> clazz)
-    {
-        //Looking for bean types
-        Typed beanTypes = clazz.getAnnotation(Typed.class);
-        if(beanTypes != null)
-        {
-            defineUserDefinedBeanTypes(bean, null, beanTypes);            
-        }
-        else
-        {
-            defineNormalApiTypes(bean, clazz);
-        }
-        removeIgnoredInterfaces(bean);
-    }
-
-    private static <T> void removeIgnoredInterfaces(AbstractOwbBean<T> bean)
-    {
-        Set<String> ignoredInterfaces = bean.getWebBeansContext().getOpenWebBeansConfiguration().getIgnoredInterfaces();
-        for (Iterator<Type> i = bean.getTypes().iterator(); i.hasNext(); )
-        {
-            Type t = i.next();
-            if (t instanceof Class && ignoredInterfaces.contains(((Class<?>) t).getName()))
-            {
-                i.remove();
-            }
-        }
-    }
-
-
-    private static <T> void defineNormalApiTypes(AbstractOwbBean<T> bean, Class<T> clazz)
-    {
-        bean.getTypes().add(Object.class);
-        ClassUtil.setTypeHierarchy(bean.getTypes(), clazz);           
-    }
-    
-    private static <T> void defineUserDefinedBeanTypes(AbstractOwbBean<T> bean, Type producerGenericReturnType, Typed beanTypes)
-    {
-        if(producerGenericReturnType != null)
-        {
-            defineNormalProducerMethodApi((AbstractProducerBean<T>)bean, producerGenericReturnType);
-        }
-        else
-        {
-            defineNormalApiTypes(bean, bean.getReturnType());
-        }
-        
-        //@Type values
-        Class<?>[] types = beanTypes.value();        
-        
-        //Normal api types
-        Set<Type> apiTypes = bean.getTypes();
-        //New api types
-        Set<Type> newTypes = new HashSet<Type>();
-        for(Class<?> type : types)
-        {
-            Type foundType = null;
-            
-            for(Type apiType : apiTypes)
-            {
-                if(ClassUtil.getClazz(apiType) == type)
-                {
-                    foundType = apiType;
-                    break;
-                }
-            }
-            
-            if(foundType == null)
-            {
-                throw new WebBeansConfigurationException("@Type values must be in bean api types : " + bean.getTypes());
-            }
-            
-            newTypes.add(foundType);
-        }
-        
-        apiTypes.clear();
-        apiTypes.addAll(newTypes);
-        
-        apiTypes.add(Object.class);
-    }
-    
-    
-
-    private static <T> void defineNormalProducerMethodApi(AbstractProducerBean<T> producerBean, Type type)
-    {
-        Set<Type> types = producerBean.getTypes();
-        types.add(Object.class);
-        
-        Class<?> clazz  = ClassUtil.getClazz(type);
-        
-        if (clazz != null && (clazz.isPrimitive() || clazz.isArray()))
-        {
-            types.add(clazz);
-        }
-        else
-        {
-            ClassUtil.setTypeHierarchy(producerBean.getTypes(), type);
-        }                    
-    }
 
     /**
      * Configure web beans component qualifier.

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=1429342&r1=1429341&r2=1429342&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 Sat Jan  5 18:00:21 2013
@@ -18,6 +18,8 @@
  */
 package org.apache.webbeans.util;
 
+import static org.apache.webbeans.util.InjectionExceptionUtils.throwUnproxyableResolutionException;
+
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
@@ -39,7 +41,6 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.decorator.Decorator;
@@ -55,7 +56,32 @@ import javax.enterprise.inject.IllegalPr
 import javax.enterprise.inject.Instance;
 import javax.enterprise.inject.Produces;
 import javax.enterprise.inject.Specializes;
-import javax.enterprise.inject.spi.*;
+import javax.enterprise.inject.spi.AfterBeanDiscovery;
+import javax.enterprise.inject.spi.AfterDeploymentValidation;
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedParameter;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.BeforeBeanDiscovery;
+import javax.enterprise.inject.spi.BeforeShutdown;
+import javax.enterprise.inject.spi.Extension;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
+import javax.enterprise.inject.spi.InterceptionType;
+import javax.enterprise.inject.spi.Interceptor;
+import javax.enterprise.inject.spi.ObserverMethod;
+import javax.enterprise.inject.spi.PassivationCapable;
+import javax.enterprise.inject.spi.ProcessAnnotatedType;
+import javax.enterprise.inject.spi.ProcessBean;
+import javax.enterprise.inject.spi.ProcessInjectionTarget;
+import javax.enterprise.inject.spi.ProcessManagedBean;
+import javax.enterprise.inject.spi.ProcessObserverMethod;
+import javax.enterprise.inject.spi.ProcessProducer;
+import javax.enterprise.inject.spi.ProcessProducerField;
+import javax.enterprise.inject.spi.ProcessProducerMethod;
+import javax.enterprise.inject.spi.ProcessSessionBean;
 import javax.enterprise.util.TypeLiteral;
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -67,7 +93,6 @@ import javax.interceptor.InvocationConte
 
 import org.apache.webbeans.annotation.AnnotationManager;
 import org.apache.webbeans.annotation.AnyLiteral;
-import org.apache.webbeans.annotation.ApplicationScopeLiteral;
 import org.apache.webbeans.annotation.DefaultLiteral;
 import org.apache.webbeans.annotation.DependentScopeLiteral;
 import org.apache.webbeans.annotation.NewLiteral;
@@ -128,9 +153,6 @@ import org.apache.webbeans.portable.even
 import org.apache.webbeans.spi.plugins.OpenWebBeansEjbPlugin;
 import org.apache.webbeans.spi.plugins.OpenWebBeansPlugin;
 
-
-import static org.apache.webbeans.util.InjectionExceptionUtils.throwUnproxyableResolutionException;
-
 /**
  * Contains some utility methods used in the all project.
  *
@@ -671,14 +693,6 @@ public final class WebBeansUtil
 
         ExtensionBean<T> comp = null;
         comp = new ExtensionBean<T>(clazz, webBeansContext);
-        comp.setEnabled(true);
-
-        DefinitionUtil definitionUtil = webBeansContext.getDefinitionUtil();
-        definitionUtil.defineApiTypes(comp, clazz);
-
-        comp.setImplScopeType(new ApplicationScopeLiteral());
-        comp.addQualifier(new DefaultLiteral());
-
         webBeansContext.getAnnotatedTypeUtil().defineObserverMethods(comp, comp.getAnnotatedType());
 
         return comp;

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java?rev=1429342&r1=1429341&r2=1429342&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/TestContext.java Sat Jan  5 18:00:21 2013
@@ -21,6 +21,7 @@ package org.apache.webbeans.test;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Modifier;
+import java.lang.reflect.Type;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -30,6 +31,7 @@ import java.util.logging.Logger;
 import javax.decorator.Decorator;
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.Context;
+import javax.enterprise.inject.Typed;
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.BeanManager;
@@ -37,6 +39,7 @@ import javax.interceptor.Interceptor;
 
 import org.apache.webbeans.component.AbstractOwbBean;
 import org.apache.webbeans.component.AbstractInjectionTargetBean;
+import org.apache.webbeans.component.AbstractProducerBean;
 import org.apache.webbeans.component.ManagedBean;
 import org.apache.webbeans.component.ProducerFieldBean;
 import org.apache.webbeans.component.ProducerMethodBean;
@@ -71,6 +74,7 @@ import org.apache.webbeans.test.sterotyp
 import org.apache.webbeans.test.sterotype.StereoWithSessionScope;
 import org.apache.webbeans.test.sterotype.StereoWithSessionScope2;
 import org.apache.webbeans.util.AnnotationUtil;
+import org.apache.webbeans.util.ClassUtil;
 import org.apache.webbeans.util.WebBeansAnnotatedTypeUtil;
 import org.apache.webbeans.util.WebBeansUtil;
 import org.apache.webbeans.xml.WebBeansXMLConfigurator;
@@ -530,7 +534,7 @@ public abstract class TestContext implem
 
         Annotation[] clazzAnns = clazz.getDeclaredAnnotations();
 
-        definitionUtil.defineApiTypes(component, clazz);
+        defineApiTypes(component, clazz);
         definitionUtil.defineScopeType(component, clazzAnns, "Simple WebBean Component implementation class : " + clazz.getName()
                                                              + " stereotypes must declare same @Scope annotations", false);
         // we fully initialize the bean in this case.
@@ -571,4 +575,107 @@ public abstract class TestContext implem
 
         return component;
     }
+    
+    /**
+     * Configures the web bean api types.
+     * 
+     * @param <T> generic class type
+     * @param bean configuring web beans component
+     * @param clazz bean implementation class
+     */
+    private static <T> void defineApiTypes(AbstractOwbBean<T> bean, Class<T> clazz)
+    {
+        //Looking for bean types
+        Typed beanTypes = clazz.getAnnotation(Typed.class);
+        if(beanTypes != null)
+        {
+            defineUserDefinedBeanTypes(bean, null, beanTypes);            
+        }
+        else
+        {
+            defineNormalApiTypes(bean, clazz);
+        }
+        removeIgnoredInterfaces(bean);
+    }
+
+    private static <T> void removeIgnoredInterfaces(AbstractOwbBean<T> bean)
+    {
+        Set<String> ignoredInterfaces = bean.getWebBeansContext().getOpenWebBeansConfiguration().getIgnoredInterfaces();
+        for (Iterator<Type> i = bean.getTypes().iterator(); i.hasNext(); )
+        {
+            Type t = i.next();
+            if (t instanceof Class && ignoredInterfaces.contains(((Class<?>) t).getName()))
+            {
+                i.remove();
+            }
+        }
+    }
+    
+    private static <T> void defineUserDefinedBeanTypes(AbstractOwbBean<T> bean, Type producerGenericReturnType, Typed beanTypes)
+    {
+        if(producerGenericReturnType != null)
+        {
+            defineNormalProducerMethodApi((AbstractProducerBean<T>)bean, producerGenericReturnType);
+        }
+        else
+        {
+            defineNormalApiTypes(bean, bean.getReturnType());
+        }
+        
+        //@Type values
+        Class<?>[] types = beanTypes.value();        
+        
+        //Normal api types
+        Set<Type> apiTypes = bean.getTypes();
+        //New api types
+        Set<Type> newTypes = new HashSet<Type>();
+        for(Class<?> type : types)
+        {
+            Type foundType = null;
+            
+            for(Type apiType : apiTypes)
+            {
+                if(ClassUtil.getClazz(apiType) == type)
+                {
+                    foundType = apiType;
+                    break;
+                }
+            }
+            
+            if(foundType == null)
+            {
+                throw new WebBeansConfigurationException("@Type values must be in bean api types : " + bean.getTypes());
+            }
+            
+            newTypes.add(foundType);
+        }
+        
+        apiTypes.clear();
+        apiTypes.addAll(newTypes);
+        
+        apiTypes.add(Object.class);
+    }
+
+    private static <T> void defineNormalApiTypes(AbstractOwbBean<T> bean, Class<T> clazz)
+    {
+        bean.getTypes().add(Object.class);
+        ClassUtil.setTypeHierarchy(bean.getTypes(), clazz);           
+    }
+
+    private static <T> void defineNormalProducerMethodApi(AbstractProducerBean<T> producerBean, Type type)
+    {
+        Set<Type> types = producerBean.getTypes();
+        types.add(Object.class);
+        
+        Class<?> clazz  = ClassUtil.getClazz(type);
+        
+        if (clazz != null && (clazz.isPrimitive() || clazz.isArray()))
+        {
+            types.add(clazz);
+        }
+        else
+        {
+            ClassUtil.setTypeHierarchy(producerBean.getTypes(), type);
+        }                    
+    }
 }