You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2008/12/14 11:37:50 UTC
svn commit: r726408 -
/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
Author: gerdogdu
Date: Sun Dec 14 02:37:49 2008
New Revision: 726408
URL: http://svn.apache.org/viewvc?rev=726408&view=rev
Log:
Update API type of the producer method configuration.
Modified:
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java?rev=726408&r1=726407&r2=726408&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java Sun Dec 14 02:37:49 2008
@@ -122,6 +122,31 @@
ClassUtil.setTypeHierarchy(component.getTypes(), clazz);
}
+
+ /**
+ * Configures the producer method web bean api types.
+ *
+ * @param <T> generic class type
+ * @param component configuring web beans component
+ * @param clazz bean implementation class
+ */
+ public static <T> void defineProducerMethodApiTypes(AbstractComponent<T> component, Class<T> clazz)
+ {
+ if(clazz.isInterface())
+ {
+ ClassUtil.setInterfaceTypeHierarchy(component.getTypes(), clazz);
+ }
+ else if(clazz.isPrimitive() || clazz.isArray())
+ {
+ component.getTypes().add(clazz);
+ }
+ else
+ {
+ ClassUtil.setTypeHierarchy(component.getTypes(), clazz);
+ }
+ }
+
+
/**
* Configure web beans component binding type.
*
@@ -342,8 +367,7 @@
Annotation[] methodAnns = method.getAnnotations();
-
- DefinitionUtil.defineApiTypes(component, returnType);
+ DefinitionUtil.defineProducerMethodApiTypes(component, returnType);
DefinitionUtil.defineScopeType(component, methodAnns, "WebBeans producer method : " + method.getName() + " in class " + parent.getReturnType().getName() + " must declare default @ScopeType annotation");
DefinitionUtil.defineBindingTypes(component, methodAnns);
DefinitionUtil.defineName(component, methodAnns, WebBeansUtil.getProducerDefaultName(method.getName()));