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()));