You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2011/04/30 00:56:03 UTC
svn commit: r1098003 -
/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
Author: hlship
Date: Fri Apr 29 22:56:03 2011
New Revision: 1098003
URL: http://svn.apache.org/viewvc?rev=1098003&view=rev
Log:
TAP5-853: Safely dereference method parameter values which may be null
Modified:
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
Modified: tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java?rev=1098003&r1=1098002&r2=1098003&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java (original)
+++ tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticClassImpl.java Fri Apr 29 22:56:03 2011
@@ -111,6 +111,14 @@ public class PlasticClassImpl extends Lo
return PlasticUtils.getMethod(declaringClass, methodName, parameterTypes);
}
+ private static <T> T safeArrayDeref(T[] array, int index)
+ {
+ if (array == null)
+ return null;
+
+ return array[index];
+ }
+
private class PlasticMember implements AnnotationAccess
{
private final AnnotationAccess annotationAccess;
@@ -350,8 +358,9 @@ public class PlasticClassImpl extends Lo
for (int i = 0; i < description.argumentTypes.length; i++)
{
- parameters.add(new MethodParameterImpl(node.visibleParameterAnnotations[i],
- description.argumentTypes[i], i));
+
+ parameters.add(new MethodParameterImpl(safeArrayDeref(node.visibleParameterAnnotations, i),
+ safeArrayDeref(description.argumentTypes, i), i));
}
}