You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by da...@apache.org on 2005/01/12 23:13:28 UTC
svn commit: r124996 - in cocoon/trunk/src/blocks/template: java/org/apache/cocoon/template/jxtg java/org/apache/cocoon/template/jxtg/environment java/org/apache/cocoon/template/jxtg/expression java/org/apache/cocoon/template/jxtg/script java/org/apache/cocoon/template/jxtg/script/event test/org/apache/cocoon/components/expression test/org/apache/cocoon/environment test/org/apache/cocoon/template/jxtg
Author: danielf
Date: Wed Jan 12 14:13:27 2005
New Revision: 124996
URL: http://svn.apache.org/viewcvs?view=rev&rev=124996
Log:
Gathering expression functionality to JXTExpression.
Modified:
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/environment/ValueHelper.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEval.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartForEach.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatDate.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatNumber.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartIf.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartImport.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartOut.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartSet.java
cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartWhen.java
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/environment/FOMTestCase.java
cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/JXTemplateGenerator.java Wed Jan 12 14:13:27 2005
@@ -40,7 +40,6 @@
import org.apache.cocoon.template.jxtg.environment.JXCacheKey;
import org.apache.cocoon.template.jxtg.environment.JXSourceValidity;
import org.apache.cocoon.template.jxtg.environment.MyVariables;
-import org.apache.cocoon.template.jxtg.environment.ValueHelper;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
import org.apache.cocoon.template.jxtg.expression.MyJexlContext;
import org.apache.cocoon.template.jxtg.script.Invoker;
@@ -290,8 +289,8 @@
JXTExpression cacheKeyExpr = (JXTExpression) this.startDocument
.getTemplateProperty(JXTemplateGenerator.CACHE_KEY);
try {
- final Serializable templateKey = (Serializable) ValueHelper
- .getValue(cacheKeyExpr, globalJexlContext, jxpathContext);
+ final Serializable templateKey =
+ (Serializable) cacheKeyExpr.getValue(globalJexlContext, jxpathContext);
if (templateKey != null) {
return new JXCacheKey(startDocument.getUri(), templateKey);
}
@@ -312,8 +311,8 @@
try {
final SourceValidity sourceValidity = this.startDocument
.getSourceValidity();
- final SourceValidity templateValidity = (SourceValidity) ValueHelper
- .getValue(validityExpr, globalJexlContext, jxpathContext);
+ final SourceValidity templateValidity =
+ (SourceValidity) validityExpr.getValue(globalJexlContext, jxpathContext);
if (sourceValidity != null && templateValidity != null) {
return new JXSourceValidity(sourceValidity, templateValidity);
}
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/environment/ValueHelper.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/environment/ValueHelper.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/environment/ValueHelper.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/environment/ValueHelper.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/environment/ValueHelper.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/environment/ValueHelper.java Wed Jan 12 14:13:27 2005
@@ -15,58 +15,14 @@
*/
package org.apache.cocoon.template.jxtg.environment;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
import java.util.Locale;
-import org.apache.cocoon.template.jxtg.environment.JSIntrospector;
-import org.apache.cocoon.template.jxtg.expression.JXTExpression;
-import org.apache.commons.jexl.Expression;
-import org.apache.commons.jexl.JexlContext;
-import org.apache.commons.jexl.util.Introspector;
-import org.apache.commons.jexl.util.introspection.Info;
-import org.apache.commons.jxpath.CompiledExpression;
-import org.apache.commons.jxpath.JXPathContext;
-import org.apache.commons.jxpath.Pointer;
import org.apache.commons.lang.StringUtils;
-import org.mozilla.javascript.NativeArray;
-import org.w3c.dom.Node;
-import org.xml.sax.Locator;
/**
*/
public class ValueHelper {
- private static final Iterator EMPTY_ITER = new Iterator() {
- public boolean hasNext() {
- return false;
- }
-
- public Object next() {
- return null;
- }
-
- public void remove() {
- // EMPTY
- }
- };
-
- private static final Iterator NULL_ITER = new Iterator() {
- public boolean hasNext() {
- return true;
- }
-
- public Object next() {
- return null;
- }
-
- public void remove() {
- // EMPTY
- }
- };
-
public static Locale parseLocale(String locale, String variant) {
Locale ret = null;
String language = locale;
@@ -90,182 +46,6 @@
return ret;
}
- // Hack: try to prevent JXPath from converting result to a String
- public static Object getNode(JXTExpression expr, JexlContext jexlContext, JXPathContext jxpathContext, Boolean lenient)
- throws Exception {
- try {
- Object compiled = expr.getCompiledExpression();
- if (compiled instanceof CompiledExpression) {
- CompiledExpression e = (CompiledExpression)compiled;
- boolean oldLenient = jxpathContext.isLenient();
- if (lenient != null) jxpathContext.setLenient(lenient.booleanValue());
- try {
- Iterator iter = e.iteratePointers(jxpathContext);
- if (iter.hasNext()) {
- Pointer first = (Pointer)iter.next();
- if (iter.hasNext()) {
- List result = new LinkedList();
- result.add(first.getNode());
- boolean dom = (first.getNode() instanceof Node);
- while (iter.hasNext()) {
- Object obj = ((Pointer)iter.next()).getNode();
- dom = dom && (obj instanceof Node);
- result.add(obj);
- }
- Object[] arr;
- if (dom) {
- arr = new Node[result.size()];
- } else {
- arr = new Object[result.size()];
- }
- result.toArray(arr);
- return arr;
- }
- return first.getNode();
- }
- return null;
- } finally {
- jxpathContext.setLenient(oldLenient);
- }
- } else if (compiled instanceof Expression) {
- Expression e = (Expression)compiled;
- return e.evaluate(jexlContext);
- }
- return expr.getRaw();
- } catch (InvocationTargetException e) {
- Throwable t = e.getTargetException();
- if (t instanceof Exception) {
- throw (Exception)t;
- }
- throw (Error)t;
- }
- }
-
- public static Object getNode(JXTExpression expr, JexlContext jexlContext, JXPathContext jxpathContext) throws Exception {
- return getNode(expr, jexlContext, jxpathContext, null);
- }
-
- public static Iterator getIterator(final JXTExpression items, JexlContext jexlContext, JXPathContext jxpathContext, Locator loc) throws Exception {
- Iterator iter = null;
- if (items != null) {
- if (items.getCompiledExpression() instanceof CompiledExpression) {
- CompiledExpression compiledExpression =
- (CompiledExpression) items.getCompiledExpression();
- Object val =
- compiledExpression.getPointer(jxpathContext, items.getRaw()).getNode();
- // FIXME: workaround for JXPath bug
- iter =
- val instanceof NativeArray ?
- new JSIntrospector.NativeArrayIterator((NativeArray) val)
- : compiledExpression.iteratePointers(jxpathContext);
- } else if (items.getCompiledExpression() instanceof Expression) {
- Expression e = (Expression) items.getCompiledExpression();
- Object result = e.evaluate(jexlContext);
- if (result != null) {
- iter = Introspector.getUberspect().getIterator(
- result,
- new Info(
- loc.getSystemId(),
- loc.getLineNumber(),
- loc.getColumnNumber()));
- }
- if (iter == null) {
- iter = EMPTY_ITER;
- }
- } else {
- // literal value
- iter = new Iterator() {
- Object val = items;
-
- public boolean hasNext() {
- return val != null;
- }
-
- public Object next() {
- Object res = val;
- val = null;
- return res;
- }
-
- public void remove() {
- // EMPTY
- }
- };
- }
- } else {
- iter = NULL_ITER;
- }
- return iter;
- }
-
- public static Boolean getBooleanValue(JXTExpression expr, JexlContext jexlContext,
- JXPathContext jxpathContext) throws Exception {
- Object res = ValueHelper.getValue(expr, jexlContext, jxpathContext);
- return res instanceof Boolean ? (Boolean)res : null;
- }
-
- public static String getStringValue(JXTExpression expr, JexlContext jexlContext,
- JXPathContext jxpathContext) throws Exception {
- Object res = ValueHelper.getValue(expr, jexlContext, jxpathContext);
- if (res != null) {
- return res.toString();
- }
- if (expr != null && expr.getCompiledExpression() == null) {
- return expr.getRaw();
- }
- return null;
- }
-
- public static Number getNumberValue(JXTExpression expr, JexlContext jexlContext, JXPathContext jxpathContext) throws Exception {
- Object res = ValueHelper.getValue(expr, jexlContext, jxpathContext);
- if (res instanceof Number) {
- return (Number)res;
- }
- if (res != null) {
- return Double.valueOf(res.toString());
- }
- return null;
- }
-
- public static int getIntValue(JXTExpression expr, JexlContext jexlContext, JXPathContext jxpathContext) throws Exception {
- Object res = ValueHelper.getValue(expr, jexlContext, jxpathContext);
- return res instanceof Number ? ((Number)res).intValue() : 0;
- }
+}
- public static Object getValue(JXTExpression expr, JexlContext jexlContext, JXPathContext jxpathContext) throws Exception {
- return ValueHelper.getValue(expr, jexlContext, jxpathContext, null);
- }
- public static Object getValue(JXTExpression expr, JexlContext jexlContext,
- JXPathContext jxpathContext, Boolean lenient) throws Exception {
- if (expr != null) {
- Object compiled = expr.getCompiledExpression();
- try {
- if (compiled instanceof CompiledExpression) {
- CompiledExpression e = (CompiledExpression) compiled;
- boolean oldLenient = jxpathContext.isLenient();
- if (lenient != null) {
- jxpathContext.setLenient(lenient.booleanValue());
- }
- try {
- return e.getValue(jxpathContext);
- } finally {
- jxpathContext.setLenient(oldLenient);
- }
- } else if (compiled instanceof Expression) {
- Expression e = (Expression) compiled;
- return e.evaluate(jexlContext);
- }
- return compiled;
- } catch (InvocationTargetException e) {
- Throwable t = e.getTargetException();
- if (t instanceof Exception) {
- throw (Exception) t;
- }
- throw (Error) t;
- }
- } else {
- return null;
- }
- }
-}
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/expression/JXTExpression.java Wed Jan 12 14:13:27 2005
@@ -15,8 +15,132 @@
*/
package org.apache.cocoon.template.jxtg.expression;
+import java.io.IOException;
+import java.io.StringReader;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.cocoon.template.jxtg.environment.ErrorHolder;
+import org.apache.cocoon.template.jxtg.environment.JSIntrospector;
+import org.apache.commons.jexl.Expression;
+import org.apache.commons.jexl.ExpressionFactory;
+import org.apache.commons.jexl.JexlContext;
+import org.apache.commons.jexl.util.Introspector;
+import org.apache.commons.jexl.util.introspection.Info;
+import org.apache.commons.jxpath.CompiledExpression;
+import org.apache.commons.jxpath.JXPathContext;
+import org.apache.commons.jxpath.Pointer;
+import org.mozilla.javascript.NativeArray;
+import org.w3c.dom.Node;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
public class JXTExpression extends Subst {
+
+ // Factory classes
+
+ public static JXTExpression compile(final String variable, boolean xpath)
+ throws Exception {
+ Object compiled;
+ if (xpath) {
+ compiled = JXPathContext.compile(variable);
+ } else {
+ compiled = ExpressionFactory.createExpression(variable);
+ }
+ return new JXTExpression(variable, compiled);
+ }
+
+ public static JXTExpression compileBoolean(String val, String msg,
+ Locator location) throws SAXException {
+ JXTExpression res = compileExpr(val, msg, location);
+ if (res.getCompiledExpression() == null && res.getRaw() != null) {
+ res.setCompiledExpression(Boolean.valueOf(res.getRaw()));
+ }
+ return res;
+ }
+
+ /*
+ * Compile an integer expression (returns either a Compiled Expression or an
+ * Integer literal)
+ */
+ public static JXTExpression compileInt(String val, String msg,
+ Locator location) throws SAXException {
+ JXTExpression res = compileExpr(val, msg, location);
+ if (res.getCompiledExpression() == null && res.getRaw() != null) {
+ res.setCompiledExpression(Integer.valueOf(res.getRaw()));
+ }
+ return res;
+ }
+
+ public static JXTExpression compileExpr(String inStr) throws Exception {
+ try {
+ if (inStr == null) {
+ return new JXTExpression(null, 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);
+ } 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) {
+ // unclosed #{} or ${}
+ throw new Exception("Unterminated " + (xpath ? "#" : "$") + "{");
+ }
+ } catch (IOException ignored) {
+ ignored.printStackTrace();
+ }
+ return new JXTExpression(inStr, null);
+ }
+
+ /**
+ * Compile a single Jexl expr (contained in ${}) or XPath expression
+ * (contained in #{})
+ */
+
+ public static JXTExpression compileExpr(String expr, String errorPrefix,
+ Locator location) throws SAXParseException {
+ try {
+ return compileExpr(expr);
+ } catch (Exception exc) {
+ throw new SAXParseException(errorPrefix + exc.getMessage(),
+ location, exc);
+ } catch (Error err) {
+ throw new SAXParseException(errorPrefix + err.getMessage(),
+ location, new ErrorHolder(err));
+ }
+ }
+
+
+ // Members
+
public JXTExpression(String raw, Object expr) {
this.raw = raw;
this.compiledExpression = expr;
@@ -25,15 +149,228 @@
String raw;
Object compiledExpression;
- public Object getCompiledExpression() {
+ private Object getCompiledExpression() {
return compiledExpression;
}
- public void setCompiledExpression(Object compiledExpression) {
+ private void setCompiledExpression(Object compiledExpression) {
this.compiledExpression = compiledExpression;
}
- public String getRaw() {
+ private String getRaw() {
return raw;
}
-}
\ No newline at end of file
+
+ // Geting the value of the expression in various forms
+
+ // Hack: try to prevent JXPath from converting result to a String
+ public Object getNode(JexlContext jexlContext, JXPathContext jxpathContext, Boolean lenient)
+ throws Exception {
+ try {
+ Object compiled = this.getCompiledExpression();
+ if (compiled instanceof CompiledExpression) {
+ CompiledExpression e = (CompiledExpression)compiled;
+ boolean oldLenient = jxpathContext.isLenient();
+ if (lenient != null) jxpathContext.setLenient(lenient.booleanValue());
+ try {
+ Iterator iter = e.iteratePointers(jxpathContext);
+ if (iter.hasNext()) {
+ Pointer first = (Pointer)iter.next();
+ if (iter.hasNext()) {
+ List result = new LinkedList();
+ result.add(first.getNode());
+ boolean dom = (first.getNode() instanceof Node);
+ while (iter.hasNext()) {
+ Object obj = ((Pointer)iter.next()).getNode();
+ dom = dom && (obj instanceof Node);
+ result.add(obj);
+ }
+ Object[] arr;
+ if (dom) {
+ arr = new Node[result.size()];
+ } else {
+ arr = new Object[result.size()];
+ }
+ result.toArray(arr);
+ return arr;
+ }
+ return first.getNode();
+ }
+ return null;
+ } finally {
+ jxpathContext.setLenient(oldLenient);
+ }
+ } else if (compiled instanceof Expression) {
+ Expression e = (Expression)compiled;
+ return e.evaluate(jexlContext);
+ }
+ return this.getRaw();
+ } catch (InvocationTargetException e) {
+ Throwable t = e.getTargetException();
+ if (t instanceof Exception) {
+ throw (Exception)t;
+ }
+ throw (Error)t;
+ }
+ }
+
+ public Object getNode(JexlContext jexlContext, JXPathContext jxpathContext)
+ throws Exception {
+ return getNode(jexlContext, jxpathContext, null);
+ }
+
+ public Iterator getIterator(JexlContext jexlContext, JXPathContext jxpathContext, Locator loc) throws Exception {
+ Iterator iter = null;
+ if (this.getCompiledExpression() != null || this.getRaw() != null) {
+ if (this.getCompiledExpression() instanceof CompiledExpression) {
+ CompiledExpression compiledExpression =
+ (CompiledExpression) this.getCompiledExpression();
+ Object val =
+ compiledExpression.getPointer(jxpathContext, this.getRaw()).getNode();
+ // FIXME: workaround for JXPath bug
+ iter =
+ val instanceof NativeArray ?
+ new JSIntrospector.NativeArrayIterator((NativeArray) val)
+ : compiledExpression.iteratePointers(jxpathContext);
+ } else if (this.getCompiledExpression() instanceof Expression) {
+ Expression e = (Expression) this.getCompiledExpression();
+ Object result = e.evaluate(jexlContext);
+ if (result != null) {
+ iter = Introspector.getUberspect().getIterator(
+ result,
+ new Info(
+ loc.getSystemId(),
+ loc.getLineNumber(),
+ loc.getColumnNumber()));
+ }
+ if (iter == null) {
+ iter = EMPTY_ITER;
+ }
+ } else {
+ // literal value
+ iter = new Iterator() {
+ Object val = this;
+
+ public boolean hasNext() {
+ return val != null;
+ }
+
+ public Object next() {
+ Object res = val;
+ val = null;
+ return res;
+ }
+
+ public void remove() {
+ // EMPTY
+ }
+ };
+ }
+ } else {
+ iter = NULL_ITER;
+ }
+ return iter;
+ }
+
+ public Boolean getBooleanValue(JexlContext jexlContext, JXPathContext jxpathContext)
+ throws Exception {
+ Object res = getValue(jexlContext, jxpathContext);
+ return res instanceof Boolean ? (Boolean)res : null;
+ }
+
+ public String getStringValue(JexlContext jexlContext, JXPathContext jxpathContext)
+ throws Exception {
+ Object res = getValue(jexlContext, jxpathContext);
+ if (res != null) {
+ return res.toString();
+ }
+ if (this.getCompiledExpression() == null) {
+ return this.getRaw();
+ }
+ return null;
+ }
+
+ public Number getNumberValue(JexlContext jexlContext, JXPathContext jxpathContext)
+ throws Exception {
+ Object res = getValue(jexlContext, jxpathContext);
+ if (res instanceof Number) {
+ return (Number)res;
+ }
+ if (res != null) {
+ return Double.valueOf(res.toString());
+ }
+ return null;
+ }
+
+ public int getIntValue(JexlContext jexlContext, JXPathContext jxpathContext)
+ throws Exception {
+ Object res = getValue(jexlContext, jxpathContext);
+ return res instanceof Number ? ((Number)res).intValue() : 0;
+ }
+
+ public Object getValue(JexlContext jexlContext, JXPathContext jxpathContext)
+ throws Exception {
+ return getValue(jexlContext, jxpathContext, null);
+ }
+
+ public Object getValue(JexlContext jexlContext, JXPathContext jxpathContext,
+ Boolean lenient) throws Exception {
+ if (this.getCompiledExpression() != null) {
+ Object compiled = this.getCompiledExpression();
+ try {
+ if (compiled instanceof CompiledExpression) {
+ CompiledExpression e = (CompiledExpression) compiled;
+ boolean oldLenient = jxpathContext.isLenient();
+ if (lenient != null) {
+ jxpathContext.setLenient(lenient.booleanValue());
+ }
+ try {
+ return e.getValue(jxpathContext);
+ } finally {
+ jxpathContext.setLenient(oldLenient);
+ }
+ } else if (compiled instanceof Expression) {
+ Expression e = (Expression) compiled;
+ return e.evaluate(jexlContext);
+ }
+ return compiled;
+ } catch (InvocationTargetException e) {
+ Throwable t = e.getTargetException();
+ if (t instanceof Exception) {
+ throw (Exception) t;
+ }
+ throw (Error) t;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ private static final Iterator EMPTY_ITER = new Iterator() {
+ public boolean hasNext() {
+ return false;
+ }
+
+ public Object next() {
+ return null;
+ }
+
+ public void remove() {
+ // EMPTY
+ }
+ };
+
+ private static final Iterator NULL_ITER = new Iterator() {
+ public boolean hasNext() {
+ return true;
+ }
+
+ public Object next() {
+ return null;
+ }
+
+ public void remove() {
+ // EMPTY
+ }
+ };
+}
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Invoker.java Wed Jan 12 14:13:27 2005
@@ -26,7 +26,6 @@
import org.apache.cocoon.template.jxtg.environment.ExecutionContext;
import org.apache.cocoon.template.jxtg.environment.LocatorFacade;
import org.apache.cocoon.template.jxtg.environment.MyVariables;
-import org.apache.cocoon.template.jxtg.environment.ValueHelper;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
import org.apache.cocoon.template.jxtg.expression.Literal;
import org.apache.cocoon.template.jxtg.expression.MyJexlContext;
@@ -80,8 +79,7 @@
} else {
JXTExpression expr = (JXTExpression) subst;
try {
- Object val = ValueHelper.getNode(expr, jexlContext,
- jxpathContext);
+ Object val = expr.getNode(jexlContext, jxpathContext);
if (val instanceof Node) {
executeDOM(consumer, (Node) val);
continue;
@@ -141,14 +139,13 @@
StartIf startIf = (StartIf) ev;
Object val;
try {
- val = ValueHelper.getValue(startIf.getTest(), jexlContext,
- jxpathContext, Boolean.TRUE);
+ val = startIf.getTest().getValue(jexlContext, jxpathContext,
+ Boolean.TRUE);
} catch (Exception e) {
- throw new SAXParseException(e.getMessage(), ev
- .getLocation(), e);
+ throw new SAXParseException(e.getMessage(), ev.getLocation(), e);
} catch (Error err) {
- throw new SAXParseException(err.getMessage(), ev
- .getLocation(), new ErrorHolder(err));
+ throw new SAXParseException(err.getMessage(), ev.getLocation(),
+ new ErrorHolder(err));
}
boolean result = false;
if (val instanceof Boolean) {
@@ -167,22 +164,20 @@
int begin, end, step;
String var, varStatus;
try {
- iter = ValueHelper.getIterator(items,
- jexlContext, jxpathContext,
- ev.getLocation());
- begin = startForEach.getBegin() == null ? 0 : ValueHelper
- .getIntValue(startForEach.getBegin(), jexlContext,
- jxpathContext);
- end = startForEach.getEnd() == null ? Integer.MAX_VALUE
- : ValueHelper.getIntValue(startForEach.getEnd(),
- jexlContext, jxpathContext);
- step = startForEach.getStep() == null ? 1 : ValueHelper
- .getIntValue(startForEach.getStep(), jexlContext,
- jxpathContext);
- var = ValueHelper.getStringValue(startForEach.getVar(),
- jexlContext, jxpathContext);
- varStatus = ValueHelper.getStringValue(startForEach
- .getVarStatus(), jexlContext, jxpathContext);
+ iter = items.getIterator(jexlContext, jxpathContext,
+ ev.getLocation());
+ begin = startForEach.getBegin() == null
+ ? 0
+ : startForEach.getBegin().getIntValue(jexlContext, jxpathContext);
+ end = startForEach.getEnd() == null
+ ? Integer.MAX_VALUE
+ : startForEach.getEnd().getIntValue(jexlContext, jxpathContext);
+ step = startForEach.getStep() == null
+ ? 1
+ : startForEach.getStep().getIntValue(jexlContext, jxpathContext);
+ var = startForEach.getVar().getStringValue(jexlContext, jxpathContext);
+ varStatus =
+ startForEach.getVarStatus().getStringValue(jexlContext, jxpathContext);
} catch (Exception exc) {
throw new SAXParseException(exc.getMessage(), ev
.getLocation(), exc);
@@ -259,11 +254,10 @@
while (startWhen != null) {
Object val;
try {
- val = ValueHelper.getValue(startWhen.getTest(),
- jexlContext, jxpathContext, Boolean.TRUE);
+ val = startWhen.getTest().getValue(jexlContext, jxpathContext,
+ Boolean.TRUE);
} catch (Exception e) {
- throw new SAXParseException(e.getMessage(), ev
- .getLocation(), e);
+ throw new SAXParseException(e.getMessage(), ev.getLocation(), e);
}
boolean result;
if (val instanceof Boolean) {
@@ -292,16 +286,13 @@
String var = null;
try {
if (startSet.getVar() != null) {
- var = ValueHelper.getStringValue(startSet.getVar(),
- jexlContext, jxpathContext);
+ var = startSet.getVar().getStringValue(jexlContext, jxpathContext);
}
if (startSet.getValue() != null) {
- value = ValueHelper.getNode(startSet.getValue(),
- jexlContext, jxpathContext);
+ value = startSet.getValue().getNode(jexlContext, jxpathContext);
}
} catch (Exception exc) {
- throw new SAXParseException(exc.getMessage(), ev
- .getLocation(), exc);
+ throw new SAXParseException(exc.getMessage(), ev.getLocation(), exc);
}
if (value == null) {
NodeList nodeList = toDOMNodeList("set", startSet,
@@ -343,8 +334,7 @@
.getSubstitutions().get(0);
Object val;
try {
- val = ValueHelper.getNode(expr,
- jexlContext, jxpathContext);
+ val = expr.getNode(jexlContext, jxpathContext);
} catch (Exception e) {
throw new SAXParseException(e.getMessage(),
ev.getLocation(), e);
@@ -367,8 +357,7 @@
JXTExpression expr = (JXTExpression) subst;
Object val;
try {
- val = ValueHelper.getValue(expr,
- jexlContext, jxpathContext);
+ val = expr.getValue(jexlContext, jxpathContext);
} catch (Exception e) {
throw new SAXParseException(e
.getMessage(), ev
@@ -447,8 +436,7 @@
JXTExpression expr = (JXTExpression) subst;
Object val;
try {
- val = ValueHelper.getValue(expr,
- jexlContext, jxpathContext);
+ val = expr.getValue(jexlContext, jxpathContext);
} catch (Exception e) {
throw new SAXParseException(e.getMessage(),
ev.getLocation(), e);
@@ -549,8 +537,8 @@
StartOut startOut = (StartOut) ev;
Object val;
try {
- val = ValueHelper.getNode(startOut.getCompiledExpression(),
- jexlContext, jxpathContext, startOut.getLenient());
+ val = startOut.getCompiledExpression().getNode(jexlContext, jxpathContext,
+ startOut.getLenient());
if (val instanceof Node) {
executeDOM(consumer, (Node) val);
} else if (val instanceof NodeList) {
@@ -585,8 +573,7 @@
StartEval startEval = (StartEval) ev;
JXTExpression expr = startEval.getValue();
try {
- Object val = ValueHelper.getNode(expr, jexlContext,
- jxpathContext);
+ Object val = expr.getNode(jexlContext, jxpathContext);
if (!(val instanceof StartElement)) {
throw new Exception(
"macro invocation required instead of: " + val);
@@ -644,8 +631,7 @@
JXTExpression expr = (JXTExpression) subst;
Object val;
try {
- val = ValueHelper.getValue(expr, jexlContext,
- jxpathContext);
+ val = expr.getValue(jexlContext, jxpathContext);
} catch (Exception exc) {
throw new SAXParseException(exc.getMessage(),
ev.getLocation(), exc);
@@ -669,12 +655,10 @@
MyJexlContext selectJexl = jexlContext;
if (startImport.getSelect() != null) {
try {
- Object obj = ValueHelper.getValue(startImport
- .getSelect(), jexlContext, jxpathContext);
- selectJXPath = jxpathContextFactory.newContext(null,
- obj);
- selectJXPath.setVariables(jxpathContext
- .getVariables());
+ Object obj =
+ startImport.getSelect().getValue(jexlContext, jxpathContext);
+ selectJXPath = jxpathContextFactory.newContext(null, obj);
+ selectJXPath.setVariables(jxpathContext.getVariables());
selectJexl = new MyJexlContext(jexlContext);
JXTemplateGenerator.fillContext(obj, selectJexl);
} catch (Exception exc) {
@@ -728,9 +712,8 @@
} else {
JXTExpression expr = (JXTExpression) subst;
try {
- Object val = ValueHelper.getValue(expr, executionContext
- .getJexlContext(), executionContext
- .getJXPathContext());
+ Object val = expr.getValue(executionContext.getJexlContext(),
+ executionContext.getJXPathContext());
chars = val != null ? val.toString().toCharArray()
: ArrayUtils.EMPTY_CHAR_ARRAY;
} catch (Exception e) {
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/Parser.java Wed Jan 12 14:13:27 2005
@@ -15,16 +15,11 @@
*/
package org.apache.cocoon.template.jxtg.script;
-import java.io.IOException;
-import java.io.StringReader;
import java.util.Stack;
import org.apache.cocoon.template.jxtg.JXTemplateGenerator;
-import org.apache.cocoon.template.jxtg.environment.ErrorHolder;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
import org.apache.cocoon.template.jxtg.script.event.*;
-import org.apache.commons.jexl.ExpressionFactory;
-import org.apache.commons.jxpath.JXPathContext;
import org.apache.commons.lang.StringUtils;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
@@ -184,8 +179,8 @@
if (StringUtils.equals(attributeURI, JXTemplateGenerator.NS)) {
getStartEvent().getTemplateProperties().put(
elementAttributes.getLocalName(i),
- compileExpr(elementAttributes.getValue(i), null,
- locator));
+ JXTExpression.compileExpr(elementAttributes.getValue(i), null,
+ locator));
elementAttributes.removeAttribute(i--);
}
}
@@ -267,106 +262,9 @@
public void startEntity(String name) throws SAXException {
addEvent(new StartEntity(locator, name));
}
+}
- public static JXTExpression compile(final String variable, boolean xpath)
- throws Exception {
- Object compiled;
- if (xpath) {
- compiled = JXPathContext.compile(variable);
- } else {
- compiled = ExpressionFactory.createExpression(variable);
- }
- return new JXTExpression(variable, compiled);
- }
- public static JXTExpression compileBoolean(String val, String msg,
- Locator location) throws SAXException {
- JXTExpression res = compileExpr(val, msg, location);
- if (res != null) {
- if (res.getCompiledExpression() == null) {
- res.setCompiledExpression(Boolean.valueOf(res.getRaw()));
- }
- return res;
- }
- return null;
- }
- /*
- * Compile an integer expression (returns either a Compiled Expression or an
- * Integer literal)
- */
- public static JXTExpression compileInt(String val, String msg,
- Locator location) throws SAXException {
- JXTExpression res = compileExpr(val, msg, location);
- if (res != null) {
- if (res.getCompiledExpression() == null) {
- res.setCompiledExpression(Integer.valueOf(res.getRaw()));
- }
- return res;
- }
- return null;
- }
- public static JXTExpression compileExpr(String inStr) throws Exception {
- 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);
- } 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) {
- // unclosed #{} or ${}
- throw new Exception("Unterminated " + (xpath ? "#" : "$") + "{");
- }
- } catch (IOException ignored) {
- ignored.printStackTrace();
- }
- return new JXTExpression(inStr, null);
- }
- /**
- * Compile a single Jexl expr (contained in ${}) or XPath expression
- * (contained in #{})
- */
-
- public static JXTExpression compileExpr(String expr, String errorPrefix,
- Locator location) throws SAXParseException {
- try {
- return compileExpr(expr);
- } catch (Exception exc) {
- throw new SAXParseException(errorPrefix + exc.getMessage(),
- location, exc);
- } catch (Error err) {
- throw new SAXParseException(errorPrefix + err.getMessage(),
- location, new ErrorHolder(err));
- }
- }
-}
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartElement.java Wed Jan 12 14:13:27 2005
@@ -23,7 +23,6 @@
import org.apache.cocoon.template.jxtg.environment.ErrorHolder;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
import org.apache.cocoon.template.jxtg.expression.Literal;
-import org.apache.cocoon.template.jxtg.script.Parser;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -64,7 +63,7 @@
String str = buf.toString();
JXTExpression compiledExpression;
try {
- compiledExpression = Parser.compile(str,
+ compiledExpression = JXTExpression.compile(str,
xpath);
} catch (Exception exc) {
throw new SAXParseException(exc
@@ -171,4 +170,4 @@
this.endElement = endElement;
}
-}
\ No newline at end of file
+}
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEval.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEval.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEval.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEval.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEval.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartEval.java Wed Jan 12 14:13:27 2005
@@ -18,7 +18,6 @@
import java.util.Stack;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
-import org.apache.cocoon.template.jxtg.script.Parser;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
@@ -31,7 +30,7 @@
super(raw);
String select = attrs.getValue("select");
- this.value = Parser.compileExpr(select, "eval: \"select\":", getLocation());
+ this.value = JXTExpression.compileExpr(select, "eval: \"select\":", getLocation());
}
public JXTExpression getValue() {
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartForEach.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartForEach.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartForEach.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartForEach.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartForEach.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartForEach.java Wed Jan 12 14:13:27 2005
@@ -18,7 +18,6 @@
import java.util.Stack;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
-import org.apache.cocoon.template.jxtg.script.Parser;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -44,11 +43,11 @@
String items = attrs.getValue("items");
String select = attrs.getValue("select");
- this.var = Parser.compileExpr(attrs.getValue("var"), null, locator);
- this.varStatus = Parser.compileExpr(attrs.getValue("varStatus"), null, locator);
- this.begin = Parser.compileInt(attrs.getValue("begin"), name, locator);
- this.end = Parser.compileInt(attrs.getValue("end"), name, locator);
- this.step = Parser.compileInt(attrs.getValue("step"), name, locator);
+ this.var = JXTExpression.compileExpr(attrs.getValue("var"), null, locator);
+ this.varStatus = JXTExpression.compileExpr(attrs.getValue("varStatus"), null, locator);
+ this.begin = JXTExpression.compileInt(attrs.getValue("begin"), name, locator);
+ this.end = JXTExpression.compileInt(attrs.getValue("end"), name, locator);
+ this.step = JXTExpression.compileInt(attrs.getValue("step"), name, locator);
String lenientValue = attrs.getValue("lenient");
this.lenient = (lenientValue == null) ? null : Boolean.valueOf(lenientValue);
@@ -61,7 +60,7 @@
throw new SAXParseException("forEach: only one of \"select\" or \"items\" may be specified",
locator, null);
}
- this.items = Parser.compileExpr(items == null ? select : items, null, locator);
+ this.items = JXTExpression.compileExpr(items == null ? select : items, null, locator);
}
public JXTExpression getBegin() {
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatDate.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatDate.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatDate.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatDate.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatDate.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatDate.java Wed Jan 12 14:13:27 2005
@@ -23,7 +23,6 @@
import org.apache.cocoon.template.jxtg.environment.ValueHelper;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
-import org.apache.cocoon.template.jxtg.script.Parser;
import org.apache.commons.jexl.JexlContext;
import org.apache.commons.jxpath.JXPathContext;
import org.xml.sax.Attributes;
@@ -52,30 +51,27 @@
Locator locator = getLocation();
- this.var = Parser.compileExpr(attrs.getValue("var"), null, locator);
- this.value = Parser.compileExpr(attrs.getValue("value"), null, locator);
- this.type = Parser.compileExpr(attrs.getValue("type"), null, locator);
- this.pattern = Parser.compileExpr(attrs.getValue("pattern"), null, locator);
- this.timeZone = Parser.compileExpr(attrs.getValue("timeZone"), null, locator);
- this.dateStyle = Parser.compileExpr(attrs.getValue("dateStyle"), null, locator);
- this.timeStyle = Parser.compileExpr(attrs.getValue("timeStyle"), null, locator);
- this.locale = Parser.compileExpr(attrs.getValue("locale"), null, locator);
+ this.var = JXTExpression.compileExpr(attrs.getValue("var"), null, locator);
+ this.value = JXTExpression.compileExpr(attrs.getValue("value"), null, locator);
+ this.type = JXTExpression.compileExpr(attrs.getValue("type"), null, locator);
+ this.pattern = JXTExpression.compileExpr(attrs.getValue("pattern"), null, locator);
+ this.timeZone = JXTExpression.compileExpr(attrs.getValue("timeZone"), null, locator);
+ this.dateStyle = JXTExpression.compileExpr(attrs.getValue("dateStyle"), null, locator);
+ this.timeStyle = JXTExpression.compileExpr(attrs.getValue("timeStyle"), null, locator);
+ this.locale = JXTExpression.compileExpr(attrs.getValue("locale"), null, locator);
}
public String format(JexlContext jexl, JXPathContext jxp) throws Exception {
- String var = ValueHelper.getStringValue(this.var, jexl, jxp);
- Object value = ValueHelper.getValue(this.value, jexl, jxp);
- Object locVal = ValueHelper.getValue(this.locale, jexl, jxp);
- String pattern = ValueHelper.getStringValue(this.pattern, jexl,
+ String var = this.var.getStringValue(jexl, jxp);
+ Object value = this.value.getValue(jexl, jxp);
+ Object locVal = this.locale.getValue(jexl, jxp);
+ String pattern = this.pattern.getStringValue(jexl,
jxp);
- Object timeZone = ValueHelper
- .getValue(this.timeZone, jexl, jxp);
+ Object timeZone = this.timeZone.getValue(jexl, jxp);
- String type = ValueHelper.getStringValue(this.type, jexl, jxp);
- String timeStyle = ValueHelper.getStringValue(this.timeStyle,
- jexl, jxp);
- String dateStyle = ValueHelper.getStringValue(this.dateStyle,
- jexl, jxp);
+ String type = this.type.getStringValue(jexl, jxp);
+ String timeStyle = this.timeStyle.getStringValue(jexl, jxp);
+ String dateStyle = this.dateStyle.getStringValue(jexl, jxp);
String formatted = null;
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatNumber.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatNumber.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatNumber.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatNumber.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatNumber.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartFormatNumber.java Wed Jan 12 14:13:27 2005
@@ -24,7 +24,6 @@
import org.apache.cocoon.template.jxtg.environment.ValueHelper;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
-import org.apache.cocoon.template.jxtg.script.Parser;
import org.apache.commons.jexl.JexlContext;
import org.apache.commons.jxpath.JXPathContext;
import org.apache.commons.lang.StringUtils;
@@ -69,53 +68,44 @@
Locator locator = getLocation();
- this.value = Parser.compileExpr(attrs.getValue("value"), null, locator);
- this.type = Parser.compileExpr(attrs.getValue("type"), null, locator);
- this.pattern = Parser.compileExpr(attrs.getValue("pattern"), null, locator);
+ this.value = JXTExpression.compileExpr(attrs.getValue("value"), null, locator);
+ this.type = JXTExpression.compileExpr(attrs.getValue("type"), null, locator);
+ this.pattern = JXTExpression.compileExpr(attrs.getValue("pattern"), null, locator);
this.currencyCode =
- Parser.compileExpr(attrs.getValue("currencyCode"), null, locator);
+ JXTExpression.compileExpr(attrs.getValue("currencyCode"), null, locator);
this.currencySymbol =
- Parser.compileExpr(attrs.getValue("currencySymbol"), null, locator);
+ JXTExpression.compileExpr(attrs.getValue("currencySymbol"), null, locator);
this.isGroupingUsed =
- Parser.compileBoolean(attrs.getValue("isGroupingUsed"), null, locator);
+ JXTExpression.compileBoolean(attrs.getValue("isGroupingUsed"), null, locator);
this.maxIntegerDigits =
- Parser.compileInt(attrs.getValue("maxIntegerDigits"), null, locator);
+ JXTExpression.compileInt(attrs.getValue("maxIntegerDigits"), null, locator);
this.minIntegerDigits =
- Parser.compileInt(attrs.getValue("minIntegerDigits"), null, locator);
+ JXTExpression.compileInt(attrs.getValue("minIntegerDigits"), null, locator);
this.maxFractionDigits =
- Parser.compileInt(attrs.getValue("maxFractionDigits"), null, locator);
+ JXTExpression.compileInt(attrs.getValue("maxFractionDigits"), null, locator);
this.minFractionDigits =
- Parser.compileInt(attrs.getValue("minFractionDigits"), null, locator);
- this.locale = Parser.compileExpr(attrs.getValue("locale"), null, locator);
- this.var = Parser.compileExpr(attrs.getValue("var"), null, locator);
+ JXTExpression.compileInt(attrs.getValue("minFractionDigits"), null, locator);
+ this.locale = JXTExpression.compileExpr(attrs.getValue("locale"), null, locator);
+ this.var = JXTExpression.compileExpr(attrs.getValue("var"), null, locator);
}
public String format(JexlContext jexl, JXPathContext jxp) throws Exception {
// Determine formatting locale
- String var = ValueHelper.getStringValue(this.var, jexl, jxp);
- Number input = ValueHelper
- .getNumberValue(this.value, jexl, jxp);
- String type = ValueHelper.getStringValue(this.type, jexl, jxp);
- String pattern = ValueHelper.getStringValue(this.pattern, jexl,
- jxp);
- String currencyCode = ValueHelper.getStringValue(
- this.currencyCode, jexl, jxp);
- String currencySymbol = ValueHelper.getStringValue(
- this.currencySymbol, jexl, jxp);
- Boolean isGroupingUsed = ValueHelper.getBooleanValue(
- this.isGroupingUsed, jexl, jxp);
- Number maxIntegerDigits = ValueHelper.getNumberValue(
- this.maxIntegerDigits, jexl, jxp);
- Number minIntegerDigits = ValueHelper.getNumberValue(
- this.minIntegerDigits, jexl, jxp);
- Number maxFractionDigits = ValueHelper.getNumberValue(
- this.maxFractionDigits, jexl, jxp);
- Number minFractionDigits = ValueHelper.getNumberValue(
- this.minFractionDigits, jexl, jxp);
- String localeStr = ValueHelper.getStringValue(this.locale,
- jexl, jxp);
- Locale loc = localeStr != null ? ValueHelper.parseLocale(
- localeStr, null) : Locale.getDefault();
+ String var = this.var.getStringValue(jexl, jxp);
+ Number input = this.value.getNumberValue(jexl, jxp);
+ String type = this.type.getStringValue(jexl, jxp);
+ String pattern = this.pattern.getStringValue(jexl, jxp);
+ String currencyCode = this.currencyCode.getStringValue(jexl, jxp);
+ String currencySymbol = this.currencySymbol.getStringValue(jexl, jxp);
+ Boolean isGroupingUsed = this.isGroupingUsed.getBooleanValue(jexl, jxp);
+ Number maxIntegerDigits = this.maxIntegerDigits.getNumberValue(jexl, jxp);
+ Number minIntegerDigits = this.minIntegerDigits.getNumberValue(jexl, jxp);
+ Number maxFractionDigits = this.maxFractionDigits.getNumberValue(jexl, jxp);
+ Number minFractionDigits = this.minFractionDigits.getNumberValue(jexl, jxp);
+ String localeStr = this.locale.getStringValue(jexl, jxp);
+ Locale loc = localeStr != null
+ ? ValueHelper.parseLocale(localeStr, null)
+ : Locale.getDefault();
String formatted;
if (loc != null) {
// Create formatter
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartIf.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartIf.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartIf.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartIf.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartIf.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartIf.java Wed Jan 12 14:13:27 2005
@@ -18,7 +18,6 @@
import java.util.Stack;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
-import org.apache.cocoon.template.jxtg.script.Parser;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -35,7 +34,7 @@
Locator locator = getLocation();
String test = attrs.getValue("test");
if (test != null) {
- this.test = Parser.compileExpr(test, "if: \"test\": ", locator);
+ this.test = JXTExpression.compileExpr(test, "if: \"test\": ", locator);
} else {
throw new SAXParseException("if: \"test\" is required", locator, null);
}
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartImport.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartImport.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartImport.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartImport.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartImport.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartImport.java Wed Jan 12 14:13:27 2005
@@ -19,7 +19,6 @@
import java.util.Stack;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
-import org.apache.cocoon.template.jxtg.script.Parser;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -52,7 +51,7 @@
// as the context object in the imported template
String context = attrs.getValue("context");
if (context != null) {
- select = Parser.compileExpr(context, "import: \"context\": ", locator);
+ select = JXTExpression.compileExpr(context, "import: \"context\": ", locator);
}
} else {
throw new SAXParseException("import: \"uri\" is required", locator, null);
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartOut.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartOut.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartOut.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartOut.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartOut.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartOut.java Wed Jan 12 14:13:27 2005
@@ -18,7 +18,6 @@
import java.util.Stack;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
-import org.apache.cocoon.template.jxtg.script.Parser;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -35,7 +34,8 @@
Locator locator = getLocation();
String value = attrs.getValue("value");
if (value != null) {
- this.compiledExpression = Parser.compileExpr(value, "out: \"value\": ", locator);
+ this.compiledExpression =
+ JXTExpression.compileExpr(value, "out: \"value\": ", locator);
String lenientValue = attrs.getValue("lenient");
this.lenient = lenientValue == null ? null : Boolean.valueOf(lenientValue);
} else {
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartSet.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartSet.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartSet.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartSet.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartSet.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartSet.java Wed Jan 12 14:13:27 2005
@@ -18,7 +18,6 @@
import java.util.Stack;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
-import org.apache.cocoon.template.jxtg.script.Parser;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -39,10 +38,10 @@
JXTExpression varExpr = null;
JXTExpression valueExpr = null;
if (var != null) {
- varExpr = Parser.compileExpr(var, "set: \"var\":", locator);
+ varExpr = JXTExpression.compileExpr(var, "set: \"var\":", locator);
}
if (value != null) {
- valueExpr = Parser.compileExpr(value, "set: \"value\":", locator);
+ valueExpr = JXTExpression.compileExpr(value, "set: \"value\":", locator);
}
this.var = varExpr;
this.value = valueExpr;
Modified: cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartWhen.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartWhen.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartWhen.java&r1=124995&p2=cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartWhen.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartWhen.java (original)
+++ cocoon/trunk/src/blocks/template/java/org/apache/cocoon/template/jxtg/script/event/StartWhen.java Wed Jan 12 14:13:27 2005
@@ -18,7 +18,6 @@
import java.util.Stack;
import org.apache.cocoon.template.jxtg.expression.JXTExpression;
-import org.apache.cocoon.template.jxtg.script.Parser;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
@@ -40,7 +39,7 @@
}
String test = attrs.getValue("test");
if (test != null) {
- this.test = Parser.compileExpr(test, "when: \"test\": ", locator);
+ this.test = JXTExpression.compileExpr(test, "when: \"test\": ", locator);
StartChoose startChoose = (StartChoose) stack.peek();
if (startChoose.getFirstChoice() != null) {
Modified: cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java&r1=124995&p2=cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java (original)
+++ cocoon/trunk/src/blocks/template/test/org/apache/cocoon/components/expression/ExpressionTestCase.java Wed Jan 12 14:13:27 2005
@@ -15,10 +15,17 @@
*/
package org.apache.cocoon.components.expression;
+import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.cocoon.CocoonTestCase;
public class ExpressionTestCase extends CocoonTestCase {
+ private Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
+
+ protected Logger getLogger() {
+ return this.logger;
+ }
public void testContext() {
ExpressionContext parentContext = new ExpressionContext();
@@ -53,6 +60,7 @@
assertNotNull("Test expression compilation", expression);
assertEquals(new Long(3), expression.evaluate(new ExpressionContext()));
+ this.release(factory);
}
public void testFactoryJXPath() throws ExpressionException, ServiceException {
@@ -63,6 +71,7 @@
assertNotNull("Test expression compilation", expression);
assertEquals(new Double(3), expression.evaluate(new ExpressionContext()));
+ this.release(factory);
}
}
Modified: cocoon/trunk/src/blocks/template/test/org/apache/cocoon/environment/FOMTestCase.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/test/org/apache/cocoon/environment/FOMTestCase.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/test/org/apache/cocoon/environment/FOMTestCase.java&r1=124995&p2=cocoon/trunk/src/blocks/template/test/org/apache/cocoon/environment/FOMTestCase.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/test/org/apache/cocoon/environment/FOMTestCase.java (original)
+++ cocoon/trunk/src/blocks/template/test/org/apache/cocoon/environment/FOMTestCase.java Wed Jan 12 14:13:27 2005
@@ -15,6 +15,8 @@
*/
package org.apache.cocoon.environment;
+import org.apache.avalon.framework.logger.ConsoleLogger;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
import org.apache.cocoon.SitemapComponentTestCase;
@@ -24,6 +26,11 @@
import org.apache.cocoon.components.expression.ExpressionFactory;
public class FOMTestCase extends SitemapComponentTestCase {
+ private Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
+
+ protected Logger getLogger() {
+ return this.logger;
+ }
public void testFOMJexl() throws ExpressionException, ServiceException {
ExpressionFactory factory = (ExpressionFactory)this.lookup(ExpressionFactory.ROLE);
@@ -37,6 +44,7 @@
expression = factory.getExpression("jexl", "cocoon.request.protocol");
assertEquals("HTTP/1.1", expression.evaluate(fomContext));
+ this.release(factory);
}
public void testFOMJXPath() throws ExpressionException, ServiceException {
@@ -51,6 +59,7 @@
expression = factory.getExpression("jxpath", "$cocoon/request/protocol");
assertEquals("HTTP/1.1", expression.evaluate(fomContext));
+ this.release(factory);
}
}
Modified: cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java
Url: http://svn.apache.org/viewcvs/cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java?view=diff&rev=124996&p1=cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java&r1=124995&p2=cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java&r2=124996
==============================================================================
--- cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java (original)
+++ cocoon/trunk/src/blocks/template/test/org/apache/cocoon/template/jxtg/JXTemplateGeneratorTestCase.java Wed Jan 12 14:13:27 2005
@@ -28,7 +28,7 @@
import org.apache.cocoon.environment.ObjectModelHelper;
public class JXTemplateGeneratorTestCase extends SitemapComponentTestCase {
- Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
+ private Logger logger = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
String docBase = "resource://org/apache/cocoon/template/jxtg/";
String JX = "jx";
Map flowContext = new HashMap();
@@ -46,7 +46,7 @@
return this.flowContext;
}
- public Logger getLogger() {
+ protected Logger getLogger() {
return this.logger;
}