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);
     }
 
     /**