Author: gerdogdu
Date: Sat Feb 27 11:36:38 2010
New Revision: 916942
URL: http://svn.apache.org/viewvc?rev=916942&view=rev
Log:
[OWB-307] InvocationContext.setParameters() and primitive vs. wrapped types
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java?rev=916942&r1=916941&r2=916942&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InvocationContextImpl.java
Sat Feb 27 11:36:38 2010
@@ -27,6 +27,7 @@
import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.util.ClassUtil;
/**
* Implementation of the {...@link InvocationContext} interface.
@@ -295,29 +296,48 @@
{
if (params == null)
{
- if (this.parameters.length > 0)
+ if (this.parameters.length >= 0)
{
- throw new IllegalArgumentException("Parameters is null");
+ throw new IllegalArgumentException("Gvien parameters is
null but expected not null parameters");
}
}
else
{
- List<Class<?>> src = new ArrayList<Class<?>>();
-
if (params.length != this.parameters.length)
{
- throw new IllegalArgumentException("Parameters length not
match");
- }
-
- for (Object param : params)
- {
- src.add(param.getClass());
+ throw new IllegalArgumentException("Expected " +
this.parameters.length + " " +
+ "parameters, but only got " +
params.length + " parameters");
}
- for (Class<?> param : this.method.getParameterTypes())
+ Class<?>[] methodParameters = this.method.getParameterTypes();
+ int i = 0;
+ for (Object obj : params)
{
- if (!src.contains(param))
- throw new IllegalArgumentException("Parameters types
not match");
+ Class<?> parameterType = methodParameters[i++];
+ if (obj == null)
+ {
+ if (parameterType.isPrimitive())
+ {
+ throw new IllegalArgumentException("Expected
parameter " + i + " to be primitive type " + parameterType.getName() +
+ ", but got a parameter that is null");
+ }
+ }
+ else
+ {
+ //Primitive check
+ if(parameterType.isPrimitive())
+ {
+ //First change to wrapper for comparision
+ parameterType =
ClassUtil.getPrimitiveWrapper(parameterType);
+ }
+
+ //Actual check
+ if (!parameterType.isInstance(obj))
+ {
+ throw new IllegalArgumentException("Expected
parameter " + i + " to be of type " + parameterType.getName() +
+ ", but got a parameter of type " +
obj.getClass().getName());
+ }
+ }
}
System.arraycopy(params, 0, this.parameters, 0, params.length);
@@ -332,6 +352,5 @@
{
// TODO Auto-generated method stub
return null;
- }
-
+ }
}
\ No newline at end of file