You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by lg...@apache.org on 2005/09/06 23:00:28 UTC
svn commit: r279105 -
/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java
Author: lgawron
Date: Tue Sep 6 14:00:07 2005
New Revision: 279105
URL: http://svn.apache.org/viewcvs?rev=279105&view=rev
Log:
only one piece of expression parsing code
Modified:
cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java
Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java?rev=279105&r1=279104&r2=279105&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java Tue Sep 6 14:00:07 2005
@@ -20,7 +20,6 @@
*/
package org.apache.cocoon.template.expression;
-import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import java.util.LinkedList;
@@ -76,49 +75,15 @@
* (contained in #{})
*/
public JXTExpression compileExpr(String inStr, String errorPrefix, Locator location) throws SAXParseException {
- try {
- if (inStr == null) {
- return null;
- }
- StringReader in = new StringReader(inStr.trim());
- int ch;
- boolean xpath = false;
- boolean inExpr = false;
- StringBuffer expr = new StringBuffer();
- while ((ch = in.read()) != -1) {
- char c = (char) ch;
- if (inExpr) {
- if (c == '\\') {
- ch = in.read();
- expr.append((ch == -1) ? '\\' : (char) ch);
- } else if (c == '}') {
- return compile(expr.toString(), xpath ? JXTExpressionCompiler.JXPATH
- : JXTExpressionCompiler.JEXL);
- } else {
- expr.append(c);
- }
- } else {
- if (c == '$' || c == '#') {
- ch = in.read();
- if (ch == '{') {
- inExpr = true;
- xpath = c == '#';
- continue;
- }
- }
- // hack: invalid expression?
- // just return the original and swallow exception
- return new JXTExpression(inStr, null);
- }
- }
- if (inExpr)
- throw new Exception("Unterminated " + (xpath ? "#" : "$") + "{");
- } catch (Exception exc) {
- throw new SAXParseException(errorPrefix + exc.getMessage(), location, exc);
- } catch (Error err) {
- throw new SAXParseException(errorPrefix + err.getMessage(), location, new ErrorHolder(err));
+ if (inStr == null) {
+ return null;
}
- return new JXTExpression(inStr, null);
+ StringReader in = new StringReader(inStr.trim());
+ List substitutions = compileSubstitutions(in, errorPrefix, location);
+ if (substitutions.size() == 0 || !(substitutions.get(0) instanceof JXTExpression))
+ return new JXTExpression(inStr, null);
+
+ return (JXTExpression) substitutions.get(0);
}
/**