2014-07-04 22:47 GMT+04:00  <ma...@apache.org>:
> Author: markt
> Date: Fri Jul  4 18:47:02 2014
> New Revision: 1607906
>
> URL: http://svn.apache.org/r1607906
> Log:
> Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56652
> Add support for method parameters that use arrays and varargs to 
> ELProcessor.defineFunction()
>
> Modified:
>     tomcat/trunk/java/javax/el/ELProcessor.java
>     tomcat/trunk/java/org/apache/el/lang/ELSupport.java
>     tomcat/trunk/java/org/apache/el/lang/ExpressionBuilder.java
>     tomcat/trunk/java/org/apache/el/parser/AstFunction.java
>     tomcat/trunk/test/javax/el/TestELProcessor.java
>     tomcat/trunk/test/javax/el/TesterFunctions.java
>     tomcat/trunk/webapps/docs/changelog.xml
>
> Modified: tomcat/trunk/java/javax/el/ELProcessor.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ELProcessor.java?rev=1607906&r1=1607905&r2=1607906&view=diff
> ==============================================================================
> --- tomcat/trunk/java/javax/el/ELProcessor.java (original)
> +++ tomcat/trunk/java/javax/el/ELProcessor.java Fri Jul  4 18:47:02 2014
> (...)
> @@ -235,7 +245,58 @@ public class ELProcessor {
>                      ImportHandler importHandler = context.getImportHandler();
>                      for (int i = 0; i < parameterTypeNames.length; i++) {
>                          String parameterTypeName = 
> parameterTypeNames[i].trim();
> -                        if (!PRIMITIVES.contains(parameterTypeName) &&
> +                        int dimension = 0;
> +                        int bracketPos = parameterTypeName.indexOf('[');
> +                        if (bracketPos > -1) {
> +                            String parameterTypeNameOnly =
> +                                    parameterTypeName.substring(0, 
> bracketPos).trim();

trim() here - OK.

> +                            while (bracketPos > -1) {
> +                                dimension++;
> +                                bracketPos = parameterTypeName.indexOf('[', 
> bracketPos+ 1);
> +                            }
> +                            parameterTypeName = parameterTypeNameOnly;
> +                        }
> +                        boolean varArgs = false;
> +                        if (parameterTypeName.endsWith("...")) {
> +                            varArgs = true;
> +                            dimension = 1;
> +                            parameterTypeName = parameterTypeName.substring(
> +                                    0, parameterTypeName.length() -3);

I think it needs trim() here as well.

> +                        }
> +                        boolean isPrimitive = 
> PRIMITIVES.contains(parameterTypeName);
> ...

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to