You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by vg...@apache.org on 2007/12/20 16:03:45 UTC
svn commit: r605955 - in /cocoon/trunk/core:
cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/el/parsing/
cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/parsin...
Author: vgritsenko
Date: Thu Dec 20 07:03:43 2007
New Revision: 605955
URL: http://svn.apache.org/viewvc?rev=605955&view=rev
Log:
cleanup StringTemplateParser interface a bit
Modified:
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/el/parsing/StringTemplateParser.java
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/parsing/LegacyStringTemplateParser.java
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java
cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/expression/DefaultStringTemplateParser.java
cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/variables/LegacySitemapStringTemplateParser.java
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/el/parsing/StringTemplateParser.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/el/parsing/StringTemplateParser.java?rev=605955&r1=605954&r2=605955&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/el/parsing/StringTemplateParser.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-api/src/main/java/org/apache/cocoon/el/parsing/StringTemplateParser.java Thu Dec 20 07:03:43 2007
@@ -31,23 +31,24 @@
String ROLE = StringTemplateParser.class.getName();
/**
- * Compile a boolean expression (returns either a Compiled Expression or a
- * Boolean literal)
+ * Compile a boolean expression. Returns either a Compiled Expression or a
+ * Boolean literal.
*/
- Subst compileBoolean(String val, String msg, Locator location) throws SAXException;
+ Subst compileBoolean(String expr, String msg, Locator location) throws SAXException;
/**
- * Compile an integer expression (returns either a Compiled Expression or an
- * Integer literal)
+ * Compile an integer expression. Returns either a Compiled Expression or an
+ * Integer literal.
*/
- Subst compileInt(String val, String msg, Locator location) throws SAXException;
+ Subst compileInt(String expr, String msg, Locator location) throws SAXException;
- Subst compileExpr(String inStr, String errorPrefix, Locator location) throws SAXParseException;
+ /**
+ * Compile an expression.
+ */
+ Subst compileExpr(String expr, String msg, Locator location) throws SAXParseException;
/**
* Parse a set of expressions spaced with literals
*/
- List parseSubstitutions(Reader in, String errorPrefix, Locator location) throws SAXParseException;
-
- List parseSubstitutions(Reader in) throws Exception;
+ List parseSubstitutions(Reader in, String msg, Locator location) throws SAXParseException;
}
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/parsing/LegacyStringTemplateParser.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/parsing/LegacyStringTemplateParser.java?rev=605955&r1=605954&r2=605955&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/parsing/LegacyStringTemplateParser.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/el/impl/parsing/LegacyStringTemplateParser.java Thu Dec 20 07:03:43 2007
@@ -33,12 +33,12 @@
public final static String JAVASCRIPT = "js";
/**
- * @see org.apache.cocoon.el.parsing.StringTemplateParser#parseSubstitutions(java.io.Reader)
+ * @see AbstractStringTemplateParser#parseSubstitutions(java.io.Reader)
*/
- public List parseSubstitutions(Reader in) throws Exception {
+ protected List parseSubstitutions(Reader in) throws Exception {
LinkedList substitutions = new LinkedList();
StringBuffer buf = new StringBuffer();
- buf.setLength(0);
+
int ch;
boolean inExpr = false;
String lang = null;
@@ -61,7 +61,6 @@
} else if (c == '$' || c == '#' || c == '@') {
ch = in.read();
if (ch == '{') {
-
lang = (c == '#') ? JXPATH : ((c == '$') ? JEXL : JAVASCRIPT);
inExpr = true;
if (buf.length() > 0) {
@@ -81,12 +80,15 @@
break;
}
}
- if (inExpr)
+
+ if (inExpr) {
throw new Exception("Unterminated {");
+ }
- if (buf.length() > 0)
+ if (buf.length() > 0) {
substitutions.add(new Literal(buf.toString()));
+ }
+
return substitutions;
}
-
}
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java?rev=605955&r1=605954&r2=605955&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/expression/AbstractStringTemplateParser.java Thu Dec 20 07:03:43 2007
@@ -27,10 +27,23 @@
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
+/**
+ * @version $Id$
+ */
public abstract class AbstractStringTemplateParser implements StringTemplateParser {
private ExpressionFactory expressionFactory;
+
+ public ExpressionFactory getExpressionFactory() {
+ return expressionFactory;
+ }
+
+ public void setExpressionFactory(ExpressionFactory expressionFactory) {
+ this.expressionFactory = expressionFactory;
+ }
+
+
protected Subst compile(final String expression) throws Exception {
return new JXTExpression(expression, this.expressionFactory.getExpression(expression));
}
@@ -40,61 +53,56 @@
}
/**
- * @see org.apache.cocoon.el.parsing.StringTemplateParser#compileBoolean(java.lang.String, java.lang.String, org.xml.sax.Locator)
+ * @see org.apache.cocoon.el.parsing.StringTemplateParser#compileBoolean(String, String, Locator)
*/
public Subst compileBoolean(String val, String msg, Locator location) throws SAXException {
Subst res = compileExpr(val, msg, location);
if (res instanceof Literal) {
res = new Literal(Boolean.valueOf(res.getRaw()));
}
+
return res;
}
/**
- * @see org.apache.cocoon.el.parsing.StringTemplateParser#compileInt(java.lang.String, java.lang.String, org.xml.sax.Locator)
+ * @see org.apache.cocoon.el.parsing.StringTemplateParser#compileInt(String, String, Locator)
*/
public Subst compileInt(String val, String msg, Locator location) throws SAXException {
Subst res = compileExpr(val, msg, location);
if (res instanceof Literal) {
res = new Literal(Integer.valueOf(res.getRaw()));
}
+
return res;
}
/**
- * @see org.apache.cocoon.el.parsing.StringTemplateParser#compileExpr(java.lang.String, java.lang.String, org.xml.sax.Locator)
+ * @see org.apache.cocoon.el.parsing.StringTemplateParser#compileExpr(String, String, Locator)
*/
public Subst compileExpr(String inStr, String errorPrefix, Locator location) throws SAXParseException {
if (inStr == null) {
return null;
}
+
StringReader in = new StringReader(inStr.trim());
List substitutions = parseSubstitutions(in, errorPrefix, location);
- if (substitutions.size() == 0 || !(substitutions.get(0) instanceof JXTExpression))
+ if (substitutions.size() == 0 || !(substitutions.get(0) instanceof JXTExpression)) {
return new Literal(inStr);
+ }
return (JXTExpression) substitutions.get(0);
}
/**
- * @see org.apache.cocoon.el.parsing.StringTemplateParser#parseSubstitutions(java.io.Reader, java.lang.String, org.xml.sax.Locator)
+ * @see org.apache.cocoon.el.parsing.StringTemplateParser#parseSubstitutions(Reader, String, Locator)
*/
public List parseSubstitutions(Reader in, String errorPrefix, Locator location) throws SAXParseException {
try {
return parseSubstitutions(in);
- } catch (Exception exc) {
- throw new SAXParseException(errorPrefix + exc.getMessage(), location, exc);
- //FIXME: Don't catch java.lang.Error
- //} catch (Error err) {
- // throw new SAXParseException(errorPrefix + err.getMessage(), location, new ErrorHolder(err));
+ } catch (Exception e) {
+ throw new SAXParseException(errorPrefix + e.getMessage(), location, e);
}
}
- public ExpressionFactory getExpressionFactory() {
- return expressionFactory;
- }
-
- public void setExpressionFactory(ExpressionFactory expressionFactory) {
- this.expressionFactory = expressionFactory;
- }
+ protected abstract List parseSubstitutions(Reader in) throws Exception;
}
Modified: cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/expression/DefaultStringTemplateParser.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/expression/DefaultStringTemplateParser.java?rev=605955&r1=605954&r2=605955&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/expression/DefaultStringTemplateParser.java (original)
+++ cocoon/trunk/core/cocoon-expression-language/cocoon-expression-language-impl/src/main/java/org/apache/cocoon/template/expression/DefaultStringTemplateParser.java Thu Dec 20 07:03:43 2007
@@ -26,12 +26,12 @@
public class DefaultStringTemplateParser extends AbstractStringTemplateParser {
/**
- * @see org.apache.cocoon.el.parsing.StringTemplateParser#parseSubstitutions(java.io.Reader)
+ * @see AbstractStringTemplateParser#parseSubstitutions(Reader)
*/
- public List parseSubstitutions(Reader in) throws Exception {
+ protected List parseSubstitutions(Reader in) throws Exception {
LinkedList substitutions = new LinkedList();
StringBuffer buf = new StringBuffer();
- buf.setLength(0);
+
int ch;
boolean inExpr = false;
top: while ((ch = in.read()) != -1) {
@@ -72,12 +72,15 @@
break;
}
}
- if (inExpr)
+
+ if (inExpr) {
throw new Exception("Unterminated {");
+ }
- if (buf.length() > 0)
+ if (buf.length() > 0) {
substitutions.add(new Literal(buf.toString()));
+ }
+
return substitutions;
}
-
}
Modified: cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/variables/LegacySitemapStringTemplateParser.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/variables/LegacySitemapStringTemplateParser.java?rev=605955&r1=605954&r2=605955&view=diff
==============================================================================
--- cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/variables/LegacySitemapStringTemplateParser.java (original)
+++ cocoon/trunk/core/cocoon-sitemap/cocoon-sitemap-impl/src/main/java/org/apache/cocoon/components/treeprocessor/variables/LegacySitemapStringTemplateParser.java Thu Dec 20 07:03:43 2007
@@ -46,7 +46,7 @@
this.serviceManager = serviceManager;
}
- public List parseSubstitutions(Reader in) throws Exception {
+ protected List parseSubstitutions(Reader in) throws Exception {
LinkedList substitutions = new LinkedList();
StringWriter writer = new StringWriter();
IOUtils.copy(in, writer);