Author: remm Date: Tue Feb 21 02:57:35 2006 New Revision: 379417 URL: http://svn.apache.org/viewcvs?rev=379417&view=rev Log: - Wire the new EL inside Jasper. - Remove dependency on commons-el. - Temporary problem: this now requires a JSP 2.1 API binary to build. - Small fixes in the EL. - Submitted by Jacob Hookom.
Added: tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/el/ tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/el/ELContextImpl.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/el/ELResolverImpl.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/el/ExpressionEvaluatorImpl.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/el/ExpressionImpl.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/el/FunctionMapperImpl.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/el/VariableResolverImpl.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/runtime/JspApplicationContextImpl.java Modified: tomcat/jasper/tc6.0.x/src/share/org/apache/el/lang/ExpressionBuilder.java tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/Node.java tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/NodeVisitor.java tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/SimpleNode.java tomcat/jasper/tc6.0.x/src/share/org/apache/el/util/MessageFactory.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/ELParser.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/JspDocumentParser.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/JspUtil.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/Node.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/PageInfo.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/Parser.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/Validator.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/resources/LocalStrings.properties tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/runtime/JspContextWrapper.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/runtime/JspFactoryImpl.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/runtime/PageContextImpl.java tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/runtime/ProtectedFunctionMapper.java Modified: tomcat/jasper/tc6.0.x/src/share/org/apache/el/lang/ExpressionBuilder.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/lang/ExpressionBuilder.java?rev=379417&r1=379416&r2=379417&view=diff ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/lang/ExpressionBuilder.java (original) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/lang/ExpressionBuilder.java Tue Feb 21 02:57:35 2006 @@ -133,7 +133,11 @@ } private void prepare(Node node) throws ELException { - node.accept(this); + try { + node.accept(this); + } catch (Exception e) { + throw (ELException) e; + } if (this.fnMapper instanceof FunctionMapperFactory) { this.fnMapper = ((FunctionMapperFactory) this.fnMapper).create(); } Modified: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/Node.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/Node.java?rev=379417&r1=379416&r2=379417&view=diff ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/Node.java (original) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/Node.java Tue Feb 21 02:57:35 2006 @@ -64,7 +64,7 @@ public void setValue(EvaluationContext ctx, Object value) throws ELException; public Class getType(EvaluationContext ctx) throws ELException; public boolean isReadOnly(EvaluationContext ctx) throws ELException; - public void accept(NodeVisitor visitor) throws ELException; + public void accept(NodeVisitor visitor) throws Exception; public MethodInfo getMethodInfo(EvaluationContext ctx, Class[] paramTypes) throws ELException; public Object invoke(EvaluationContext ctx, Class[] paramTypes, Object[] paramValues) throws ELException; } Modified: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/NodeVisitor.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/NodeVisitor.java?rev=379417&r1=379416&r2=379417&view=diff ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/NodeVisitor.java (original) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/NodeVisitor.java Tue Feb 21 02:57:35 2006 @@ -15,12 +15,10 @@ */ package org.apache.el.parser; -import javax.el.ELException; - /** * @author Jacob Hookom [EMAIL PROTECTED] * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: dpatil $ */ public interface NodeVisitor { - public void visit(Node node) throws ELException; + public void visit(Node node) throws Exception; } Modified: tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/SimpleNode.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/SimpleNode.java?rev=379417&r1=379416&r2=379417&view=diff ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/SimpleNode.java (original) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/parser/SimpleNode.java Tue Feb 21 02:57:35 2006 @@ -125,7 +125,7 @@ throw new PropertyNotWritableException(MessageFactory.get("error.syntax.set")); } - public void accept(NodeVisitor visitor) throws ELException { + public void accept(NodeVisitor visitor) throws Exception { visitor.visit(this); if (this.children != null && this.children.length > 0) { for (int i = 0; i < this.children.length; i++) { Modified: tomcat/jasper/tc6.0.x/src/share/org/apache/el/util/MessageFactory.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/el/util/MessageFactory.java?rev=379417&r1=379416&r2=379417&view=diff ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/el/util/MessageFactory.java (original) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/el/util/MessageFactory.java Tue Feb 21 02:57:35 2006 @@ -25,7 +25,7 @@ public final class MessageFactory { protected final static ResourceBundle bundle = ResourceBundle - .getBundle("com.sun.el.Messages"); + .getBundle("org.apache.el.Messages"); /** * */ Modified: tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/ELParser.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/ELParser.java?rev=379417&r1=379416&r2=379417&view=diff ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/ELParser.java (original) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/ELParser.java Tue Feb 21 02:57:35 2006 @@ -18,124 +18,132 @@ /** * This class implements a parser for EL expressions. - * - * It takes strings of the form xxx${..}yyy${..}zzz etc, and turn it into - * a ELNode.Nodes. - * + * + * It takes strings of the form xxx${..}yyy${..}zzz etc, and turn it into a + * ELNode.Nodes. + * * Currently, it only handles text outside ${..} and functions in ${ ..}. - * + * * @author Kin-man Chung */ public class ELParser { - private Token curToken; // current token + private Token curToken; // current token + private ELNode.Nodes expr; + private ELNode.Nodes ELexpr; - private int index; // Current index of the expression - private String expression; // The EL expression - private boolean escapeBS; // is '\' an escape char in text outside EL? - - private static final String reservedWords[] = { - "and", "div", "empty", "eq", "false", - "ge", "gt", "instanceof", "le", "lt", "mod", - "ne", "not", "null", "or", "true"}; + + private int index; // Current index of the expression + + private String expression; // The EL expression + + private char type; + + private boolean escapeBS; // is '\' an escape char in text outside EL? + + private static final String reservedWords[] = { "and", "div", "empty", + "eq", "false", "ge", "gt", "instanceof", "le", "lt", "mod", "ne", + "not", "null", "or", "true" }; public ELParser(String expression) { - index = 0; - this.expression = expression; - expr = new ELNode.Nodes(); + index = 0; + this.expression = expression; + expr = new ELNode.Nodes(); } /** * Parse an EL expression - * @param expression The input expression string of the form - * Char* ('${' Char* '}')* Char* + * + * @param expression + * The input expression string of the form Char* ('${' Char* + * '}')* Char* * @return Parsed EL expression in ELNode.Nodes */ public static ELNode.Nodes parse(String expression) { - ELParser parser = new ELParser(expression); - while (parser.hasNextChar()) { - String text = parser.skipUntilEL(); - if (text.length() > 0) { - parser.expr.add(new ELNode.Text(text)); - } - ELNode.Nodes elexpr = parser.parseEL(); - if (! elexpr.isEmpty()) { - parser.expr.add(new ELNode.Root(elexpr)); - } - } - return parser.expr; + ELParser parser = new ELParser(expression); + while (parser.hasNextChar()) { + String text = parser.skipUntilEL(); + if (text.length() > 0) { + parser.expr.add(new ELNode.Text(text)); + } + ELNode.Nodes elexpr = parser.parseEL(); + if (!elexpr.isEmpty()) { + parser.expr.add(new ELNode.Root(elexpr)); + } + } + return parser.expr; } /** * Parse an EL expression string '${...}' - [EMAIL PROTECTED] An ELNode.Nodes representing the EL expression - * TODO: Currently only parsed into functions and text strings. This - * should be rewritten for a full parser. + * + * @return An ELNode.Nodes representing the EL expression TODO: Currently + * only parsed into functions and text strings. This should be + * rewritten for a full parser. */ private ELNode.Nodes parseEL() { - StringBuffer buf = new StringBuffer(); - ELexpr = new ELNode.Nodes(); - while (hasNext()) { - curToken = nextToken(); - if (curToken instanceof Char) { - if (curToken.toChar() == '}') { - break; - } - buf.append(curToken.toChar()); - } else { - // Output whatever is in buffer - if (buf.length() > 0) { - ELexpr.add(new ELNode.ELText(buf.toString())); - } - if (!parseFunction()) { - ELexpr.add(new ELNode.ELText(curToken.toString())); - } - } - } - if (buf.length() > 0) { - ELexpr.add(new ELNode.ELText(buf.toString())); - } + StringBuffer buf = new StringBuffer(); + ELexpr = new ELNode.Nodes(); + while (hasNext()) { + curToken = nextToken(); + if (curToken instanceof Char) { + if (curToken.toChar() == '}') { + break; + } + buf.append(curToken.toChar()); + } else { + // Output whatever is in buffer + if (buf.length() > 0) { + ELexpr.add(new ELNode.ELText(buf.toString())); + } + if (!parseFunction()) { + ELexpr.add(new ELNode.ELText(curToken.toString())); + } + } + } + if (buf.length() > 0) { + ELexpr.add(new ELNode.ELText(buf.toString())); + } - return ELexpr; + return ELexpr; } /** - * Parse for a function - * FunctionInvokation ::= (identifier ':')? identifier '(' - * (Expression (,Expression)*)? ')' - * Note: currently we don't parse arguments + * Parse for a function FunctionInvokation ::= (identifier ':')? identifier + * '(' (Expression (,Expression)*)? ')' Note: currently we don't parse + * arguments */ private boolean parseFunction() { - if (! (curToken instanceof Id) || isELReserved(curToken.toString())) { - return false; - } - String s1 = null; // Function prefix - String s2 = curToken.toString(); // Function name - int mark = getIndex(); - if (hasNext()) { - Token t = nextToken(); - if (t.toChar() == ':') { - if (hasNext()) { - Token t2 = nextToken(); - if (t2 instanceof Id) { - s1 = s2; - s2 = t2.toString(); - if (hasNext()) { - t = nextToken(); - } - } - } - } - if (t.toChar() == '(') { - ELexpr.add(new ELNode.Function(s1, s2)); - return true; - } - } - setIndex(mark); - return false; + if (!(curToken instanceof Id) || isELReserved(curToken.toString())) { + return false; + } + String s1 = null; // Function prefix + String s2 = curToken.toString(); // Function name + int mark = getIndex(); + if (hasNext()) { + Token t = nextToken(); + if (t.toChar() == ':') { + if (hasNext()) { + Token t2 = nextToken(); + if (t2 instanceof Id) { + s1 = s2; + s2 = t2.toString(); + if (hasNext()) { + t = nextToken(); + } + } + } + } + if (t.toChar() == '(') { + ELexpr.add(new ELNode.Function(s1, s2)); + return true; + } + } + setIndex(mark); + return false; } /** @@ -145,13 +153,13 @@ int i = 0; int j = reservedWords.length; while (i < j) { - int k = (i+j)/2; + int k = (i + j) / 2; int result = reservedWords[k].compareTo(id); if (result == 0) { return true; } if (result < 0) { - i = k+1; + i = k + 1; } else { j = k; } @@ -160,79 +168,81 @@ } /** - * Skip until an EL expression ('${') is reached, allowing escape sequences - * '\\' and '\$'. + * Skip until an EL expression ('${' || '#{') is reached, allowing escape + * sequences '\\' and '\$' and '\#'. + * * @return The text string up to the EL expression */ private String skipUntilEL() { - char prev = 0; - StringBuffer buf = new StringBuffer(); - while (hasNextChar()) { - char ch = nextChar(); - if (prev == '\\') { - prev = 0; - if (ch == '\\') { - buf.append('\\'); - if (!escapeBS) - prev = '\\'; - } else if (ch == '$') { - buf.append('$'); - } - // else error! - } else if (prev == '$') { - if (ch == '{') { - prev = 0; - break; - } - buf.append('$'); - buf.append(ch); - } else if (ch == '\\' || ch == '$') { - prev = ch; - } else { - buf.append(ch); - } - } - if (prev != 0) { - buf.append(prev); - } - return buf.toString(); + char prev = 0; + StringBuffer buf = new StringBuffer(); + while (hasNextChar()) { + char ch = nextChar(); + if (prev == '\\') { + prev = 0; + if (ch == '\\') { + buf.append('\\'); + if (!escapeBS) + prev = '\\'; + } else if (ch == '$' || ch == '#') { + buf.append(ch); + } + // else error! + } else if (prev == '$' || prev == '#') { + if (ch == '{') { + this.type = prev; + prev = 0; + break; + } + buf.append(prev); + } + if (ch == '\\' || ch == '$' || ch == '#') { + prev = ch; + } else { + buf.append(ch); + } + } + if (prev != 0) { + buf.append(prev); + } + return buf.toString(); } /* * @return true if there is something left in EL expression buffer other - * than white spaces. + * than white spaces. */ private boolean hasNext() { - skipSpaces(); - return hasNextChar(); + skipSpaces(); + return hasNextChar(); } /* * @return The next token in the EL expression buffer. */ private Token nextToken() { - skipSpaces(); - if (hasNextChar()) { - char ch = nextChar(); - if (Character.isJavaIdentifierStart(ch)) { - StringBuffer buf = new StringBuffer(); - buf.append(ch); - while ((ch = peekChar()) != -1 && - Character.isJavaIdentifierPart(ch)) { - buf.append(ch); - nextChar(); - } - return new Id(buf.toString()); - } - - if (ch == '\'' || ch == '"') { - return parseQuotedChars(ch); - } else { - // For now... - return new Char(ch); - } - } - return null; + skipSpaces(); + if (hasNextChar()) { + char ch = nextChar(); + if (Character.isJavaIdentifierStart(ch)) { + StringBuffer buf = new StringBuffer(); + buf.append(ch); + while ((ch = peekChar()) != -1 + && Character.isJavaIdentifierPart(ch)) { + buf.append(ch); + nextChar(); + } + return new Id(buf.toString()); + } + + if (ch == '\'' || ch == '"') { + return parseQuotedChars(ch); + } else { + // For now... + return new Char(ch); + } + } + return null; } /* @@ -240,63 +250,63 @@ * '\\', and ('\"', or "\'") */ private Token parseQuotedChars(char quote) { - StringBuffer buf = new StringBuffer(); - buf.append(quote); - while (hasNextChar()) { - char ch = nextChar(); - if (ch == '\\') { - ch = nextChar(); - if (ch == '\\' || ch == quote) { - buf.append(ch); - } - // else error! - } else if (ch == quote) { - buf.append(ch); - break; - } else { - buf.append(ch); - } - } - return new QuotedString(buf.toString()); + StringBuffer buf = new StringBuffer(); + buf.append(quote); + while (hasNextChar()) { + char ch = nextChar(); + if (ch == '\\') { + ch = nextChar(); + if (ch == '\\' || ch == quote) { + buf.append(ch); + } + // else error! + } else if (ch == quote) { + buf.append(ch); + break; + } else { + buf.append(ch); + } + } + return new QuotedString(buf.toString()); } /* - * A collection of low level parse methods dealing with character in - * the EL expression buffer. + * A collection of low level parse methods dealing with character in the EL + * expression buffer. */ private void skipSpaces() { - while (hasNextChar()) { - if (expression.charAt(index) > ' ') - break; - index++; - } + while (hasNextChar()) { + if (expression.charAt(index) > ' ') + break; + index++; + } } private boolean hasNextChar() { - return index < expression.length(); + return index < expression.length(); } private char nextChar() { - if (index >= expression.length()) { - return (char)-1; - } - return expression.charAt(index++); + if (index >= expression.length()) { + return (char) -1; + } + return expression.charAt(index++); } private char peekChar() { - if (index >= expression.length()) { - return (char)-1; - } - return expression.charAt(index); + if (index >= expression.length()) { + return (char) -1; + } + return expression.charAt(index); } private int getIndex() { - return index; + return index; } private void setIndex(int i) { - index = i; + index = i; } /* @@ -304,28 +314,28 @@ */ private static class Token { - char toChar() { - return 0; - } - - public String toString() { - return ""; - } + char toChar() { + return 0; + } + + public String toString() { + return ""; + } } /* * Represents an ID token in EL */ private static class Id extends Token { - String id; + String id; + + Id(String id) { + this.id = id; + } - Id(String id) { - this.id = id; - } - - public String toString() { - return id; - } + public String toString() { + return id; + } } /* @@ -333,19 +343,19 @@ */ private static class Char extends Token { - private char ch; + private char ch; + + Char(char ch) { + this.ch = ch; + } - Char(char ch) { - this.ch = ch; - } - - char toChar() { - return ch; - } - - public String toString() { - return (new Character(ch)).toString(); - } + char toChar() { + return ch; + } + + public String toString() { + return (new Character(ch)).toString(); + } } /* @@ -353,15 +363,18 @@ */ private static class QuotedString extends Token { - private String value; + private String value; - QuotedString(String v) { - this.value = v; - } - - public String toString() { - return value; - } + QuotedString(String v) { + this.value = v; + } + + public String toString() { + return value; + } } -} + public char getType() { + return type; + } +} Modified: tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/JspDocumentParser.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/JspDocumentParser.java?rev=379417&r1=379416&r2=379417&view=diff ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/JspDocumentParser.java (original) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/JspDocumentParser.java Tue Feb 21 02:57:35 2006 @@ -508,7 +508,7 @@ int column = startMark.getColumnNumber(); CharArrayWriter ttext = new CharArrayWriter(); - int lastCh = 0; + int lastCh = 0, elType = 0; for (int i = 0; i < charBuffer.length(); i++) { int ch = charBuffer.charAt(i); @@ -518,7 +518,8 @@ } else { column++; } - if (lastCh == '$' && ch == '{') { + if ((lastCh == '$' || lastCh == '#') && ch == '{') { + elType = lastCh; if (ttext.size() > 0) { new Node.TemplateText( ttext.toString(), @@ -526,10 +527,10 @@ current); ttext = new CharArrayWriter(); //We subtract two from the column number to - //account for the '${' that we've already parsed + //account for the '[$,#]{' that we've already parsed startMark = new Mark(ctxt, path, line, column - 2); } - // following "${" to first unquoted "}" + // following "${" || "#{" to first unquoted "}" i++; boolean singleQ = false; boolean doubleQ = false; @@ -539,7 +540,7 @@ throw new SAXParseException( Localizer.getMessage( "jsp.error.unterminated", - "${"), + (char) elType + "{"), locator); } @@ -556,7 +557,7 @@ continue; } if (ch == '}') { - new Node.ELExpression( + new Node.ELExpression((char) elType, ttext.toString(), startMark, current); @@ -572,20 +573,20 @@ ttext.write(ch); lastCh = ch; } - } else if (lastCh == '\\' && ch == '$') { - ttext.write('$'); + } else if (lastCh == '\\' && (ch == '$' || ch == '#')) { + ttext.write(ch); ch = 0; // Not start of EL anymore } else { - if (lastCh == '$' || lastCh == '\\') { + if (lastCh == '$' || lastCh == '#' || lastCh == '\\') { ttext.write(lastCh); } - if (ch != '$' && ch != '\\') { + if (ch != '$' && ch != '#' && ch != '\\') { ttext.write(ch); } } lastCh = ch; } - if (lastCh == '$' || lastCh == '\\') { + if (lastCh == '$' || lastCh == '#' || lastCh == '\\') { ttext.write(lastCh); } if (ttext.size() > 0) { Modified: tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/JspUtil.java URL: http://svn.apache.org/viewcvs/tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/JspUtil.java?rev=379417&r1=379416&r2=379417&view=diff ============================================================================== --- tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/JspUtil.java (original) +++ tomcat/jasper/tc6.0.x/src/share/org/apache/jasper/compiler/JspUtil.java Tue Feb 21 02:57:35 2006 @@ -25,14 +25,17 @@ import java.util.jar.JarFile; import java.util.zip.ZipEntry; +import javax.el.FunctionMapper; import javax.servlet.jsp.el.ELException; import javax.servlet.jsp.el.ELParseException; -import javax.servlet.jsp.el.FunctionMapper; +import javax.servlet.jsp.el.ExpressionEvaluator; -import org.apache.commons.el.ExpressionEvaluatorImpl; + +import org.apache.el.ExpressionFactoryImpl; import org.apache.jasper.Constants; import org.apache.jasper.JasperException; import org.apache.jasper.JspCompilationContext; +import org.apache.jasper.el.ExpressionEvaluatorImpl; import org.xml.sax.Attributes; /** @@ -58,8 +61,13 @@ private static final String CLOSE_EXPR_XML = "%"; private static int tempSequenceNumber = 0; - private static ExpressionEvaluatorImpl expressionEvaluator - = new ExpressionEvaluatorImpl(); + + //private static ExpressionEvaluatorImpl expressionEvaluator + //= new ExpressionEvaluatorImpl(); + + //tc6 + private final static ExpressionEvaluator expressionEvaluator = + new ExpressionEvaluatorImpl(new ExpressionFactoryImpl()); private static final String javaKeywords[] = { "abstract", "assert", "boolean", "break", "byte", "case", @@ -576,6 +584,7 @@ * @param where the approximate location of the expressions in the JSP page * @param expressions a string containing zero or more "${}" expressions * @param err an error dispatcher to use + * @deprecated now delegated to the org.apache.el Package */ public static void validateExpressions(Mark where, String expressions, @@ -584,18 +593,19 @@ ErrorDispatcher err) throws JasperException { - try { - JspUtil.expressionEvaluator.parseExpression( expressions, - expectedType, null ); - } - catch( ELParseException e ) { - err.jspError(where, "jsp.error.invalid.expression", expressions, - e.toString() ); - } - catch( ELException e ) { - err.jspError(where, "jsp.error.invalid.expression", expressions, - e.toString() ); - } +// try { +// +// JspUtil.expressionEvaluator.parseExpression( expressions, +// expectedType, functionMapper ); +// } +// catch( ELParseException e ) { +// err.jspError(where, "jsp.error.invalid.expression", expressions, +// e.toString() ); +// } +// catch( ELException e ) { +// err.jspError(where, "jsp.error.invalid.expression", expressions, +// e.toString() ); +// } } /** --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]