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);
+ }
+ }
}