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 21:19:09 UTC

svn commit: r279071 - in /cocoon/blocks/template/trunk/java/org/apache/cocoon: components/expression/ template/ template/environment/ template/expression/ template/instruction/ template/script/

Author: lgawron
Date: Tue Sep  6 12:16:41 2005
New Revision: 279071

URL: http://svn.apache.org/viewcvs?rev=279071&view=rev
Log:
small steps towards pluggable ExpressionCompiler

Added:
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java   (with props)
Modified:
    cocoon/blocks/template/trunk/java/org/apache/cocoon/components/expression/ExpressionFactory.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/JXTemplateGenerator.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/TransformerAdapter.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/environment/ExecutionContext.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpression.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/Substitutions.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Attribute.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Call.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Eval.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/ForEach.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/FormatDate.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/FormatNumber.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/If.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Import.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/LocaleAwareInstruction.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Out.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/ParameterInstance.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Set.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/When.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/DefaultInstructionFactory.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/DefaultScriptManager.java
    cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/Parser.java

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/components/expression/ExpressionFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/components/expression/ExpressionFactory.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/components/expression/ExpressionFactory.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/components/expression/ExpressionFactory.java Tue Sep  6 12:16:41 2005
@@ -30,7 +30,7 @@
     extends AbstractLogEnabled
     implements Disposable, Serviceable, ThreadSafe {
     public static String ROLE = ExpressionFactory.class.getName();
-    public static String DEFAULT ="default";
+    public static String DEFAULT_EXPRESSION_LANGUAGE ="default";
 
     /** The component manager */
     protected ServiceManager manager;
@@ -70,7 +70,7 @@
     }
 
     public Expression getExpression(String expression) throws ExpressionException {
-        String language = DEFAULT;
+        String language = DEFAULT_EXPRESSION_LANGUAGE;
         int end = expression.indexOf(':');
         if (end != -1) {
             language = expression.substring(0, end);

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/JXTemplateGenerator.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/JXTemplateGenerator.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/JXTemplateGenerator.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/JXTemplateGenerator.java Tue Sep  6 12:16:41 2005
@@ -26,6 +26,7 @@
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.caching.CacheableProcessingComponent;
 import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.components.expression.ExpressionFactory;
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.generation.ServiceableGenerator;
 import org.apache.cocoon.template.environment.ExecutionContext;
@@ -59,8 +60,7 @@
  * @version SVN $Id: JXTemplateGenerator.java 169169 2005-05-08 21:23:28Z
  *          lgawron $
  */
-public class JXTemplateGenerator extends ServiceableGenerator implements
-        CacheableProcessingComponent {
+public class JXTemplateGenerator extends ServiceableGenerator implements CacheableProcessingComponent {
     /** The namespace used by this generator */
     public final static String NS = "http://apache.org/cocoon/templates/jx/1.0";
 
@@ -69,6 +69,7 @@
 
     private ExpressionContext expressionContext;
     private ScriptManager scriptManager;
+
     private StartDocument startDocument;
     private Map definitions;
 
@@ -78,7 +79,7 @@
 
     public void service(ServiceManager manager) throws ServiceException {
         super.service(manager);
-        scriptManager = (ScriptManager) this.manager.lookup(ScriptManager.ROLE);
+        this.scriptManager = (ScriptManager) this.manager.lookup(ScriptManager.ROLE);
     }
 
     public void dispose() {
@@ -93,34 +94,29 @@
         super.recycle();
     }
 
-    public void setup(SourceResolver resolver, Map objectModel, String src,
-            Parameters parameters) throws ProcessingException, SAXException,
-            IOException {
+    public void setup(SourceResolver resolver, Map objectModel, String src, Parameters parameters)
+            throws ProcessingException, SAXException, IOException {
 
         super.setup(resolver, objectModel, src, parameters);
         if (src != null)
             startDocument = scriptManager.resolveTemplate(src);
 
-        this.expressionContext = FlowObjectModelHelper.getFOMExpressionContext(
-                objectModel, parameters);
+        this.expressionContext = FlowObjectModelHelper.getFOMExpressionContext(objectModel, parameters);
         this.definitions = new HashMap();
     }
 
-    public void generate() throws IOException, SAXException,
-            ProcessingException {
+    public void generate() throws IOException, SAXException, ProcessingException {
         performGeneration(this.startDocument, null);
 
         // no need to reference compiled script anymore
         this.startDocument = null;
     }
 
-    public void performGeneration(Event startEvent, Event endEvent)
-            throws SAXException {
-        XMLConsumer consumer = new AttributeAwareXMLConsumerImpl(
-                new RedundantNamespacesFilter(this.xmlConsumer));
+    public void performGeneration(Event startEvent, Event endEvent) throws SAXException {
+        XMLConsumer consumer = new AttributeAwareXMLConsumerImpl(new RedundantNamespacesFilter(this.xmlConsumer));
         ((Map) expressionContext.get("cocoon")).put("consumer", consumer);
-        Invoker.execute(consumer, this.expressionContext, new ExecutionContext(
-                this.definitions, this.scriptManager, this.manager), null, startEvent, null);
+        Invoker.execute(consumer, this.expressionContext, new ExecutionContext(this.definitions, this.scriptManager,
+                this.manager), null, startEvent, null);
     }
 
     public Serializable getKey() {
@@ -129,8 +125,7 @@
         if (cacheKeyExpr == null)
             return null;
         try {
-            final Serializable templateKey = (Serializable) cacheKeyExpr
-                    .getValue(this.expressionContext);
+            final Serializable templateKey = (Serializable) cacheKeyExpr.getValue(this.expressionContext);
             if (templateKey != null) {
                 return new JXCacheKey(this.startDocument.getUri(), templateKey);
             }
@@ -146,10 +141,8 @@
         if (validityExpr == null)
             return null;
         try {
-            final SourceValidity sourceValidity = this.startDocument
-                    .getSourceValidity();
-            final SourceValidity templateValidity = (SourceValidity) validityExpr
-                    .getValue(this.expressionContext);
+            final SourceValidity sourceValidity = this.startDocument.getSourceValidity();
+            final SourceValidity templateValidity = (SourceValidity) validityExpr.getValue(this.expressionContext);
             if (sourceValidity != null && templateValidity != null) {
                 return new JXSourceValidity(sourceValidity, templateValidity);
             }

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/TransformerAdapter.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/TransformerAdapter.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/TransformerAdapter.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/TransformerAdapter.java Tue Sep  6 12:16:41 2005
@@ -24,6 +24,7 @@
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.expression.ExpressionFactory;
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.template.script.InstructionFactory;
 import org.apache.cocoon.template.script.Parser;
@@ -39,31 +40,28 @@
  * @version SVN $Id$
  */
 public class TransformerAdapter extends ServiceableTransformer {
-    static class TemplateConsumer extends Parser implements XMLConsumer,
-            Serviceable, Disposable {
-
-        private InstructionFactory instructionFactory;
+    static class TemplateConsumer extends Parser implements XMLConsumer, Serviceable, Disposable {
         private ServiceManager manager;
 
         public TemplateConsumer() {
             this.gen = new JXTemplateGenerator();
         }
 
-        public void setup(SourceResolver resolver, Map objectModel, String src,
-                Parameters parameters) throws ProcessingException,
-                SAXException, IOException {
+        public void setup(SourceResolver resolver, Map objectModel, String src, Parameters parameters)
+                throws ProcessingException, SAXException, IOException {
             this.gen.setup(resolver, objectModel, null, parameters);
         }
 
         public void service(ServiceManager manager) throws ServiceException {
             this.manager = manager;
             this.gen.service(manager);
-            this.instructionFactory = (InstructionFactory) manager
-                    .lookup(InstructionFactory.ROLE);
+            this.instructionFactory = (InstructionFactory) this.manager.lookup(InstructionFactory.ROLE);
+            this.expressionFactory = (ExpressionFactory) this.manager.lookup(ExpressionFactory.ROLE);
         }
 
         public void dispose() {
-            this.manager.release(instructionFactory);
+            this.manager.release(this.instructionFactory);
+            this.manager.release(this.expressionFactory);
         }
 
         public void endDocument() throws SAXException {
@@ -90,9 +88,8 @@
         templateConsumer.recycle();
     }
 
-    public void setup(SourceResolver resolver, Map objectModel, String src,
-            Parameters parameters) throws ProcessingException, SAXException,
-            IOException {
+    public void setup(SourceResolver resolver, Map objectModel, String src, Parameters parameters)
+            throws ProcessingException, SAXException, IOException {
         super.setup(resolver, objectModel, src, parameters);
         templateConsumer.setup(resolver, objectModel, src, parameters);
     }

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/environment/ExecutionContext.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/environment/ExecutionContext.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/environment/ExecutionContext.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/environment/ExecutionContext.java Tue Sep  6 12:16:41 2005
@@ -27,7 +27,7 @@
     private Map definitions;
     private ScriptManager scriptManager;
     private ServiceManager serviceManager;
-    
+
     public ExecutionContext(Map definitions, ScriptManager scriptManager, ServiceManager serviceManager) {
         this.definitions = definitions;
         this.scriptManager = scriptManager;
@@ -41,7 +41,7 @@
     public ScriptManager getScriptManager() {
         return this.scriptManager;
     }
-    
+
     public ServiceManager getServiceManager() {
         return serviceManager;
     }

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpression.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpression.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpression.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpression.java Tue Sep  6 12:16:41 2005
@@ -15,148 +15,33 @@
  */
 package org.apache.cocoon.template.expression;
 
-import java.io.IOException;
-import java.io.StringReader;
 import java.util.Iterator;
 
 import org.apache.cocoon.components.expression.Expression;
 import org.apache.cocoon.components.expression.ExpressionContext;
-import org.apache.cocoon.components.expression.jexl.JexlCompiler;
-import org.apache.cocoon.components.expression.jxpath.JXPathCompiler;
 import org.apache.cocoon.components.expression.jxpath.JXPathExpression;
-import org.apache.cocoon.template.environment.ErrorHolder;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
 
 /**
  * @version SVN $Id$
  */
 public class JXTExpression extends Subst {
-
     private String raw;
     private Object compiledExpression;
 
-    private static JXPathCompiler jxpathCompiler = new JXPathCompiler();
-    private static JexlCompiler jexlCompiler = new JexlCompiler();
-    private static String JXPATH = "jxpath";
-    private static String JEXL = "jexl";
-
-    // Factory methods
-
-    public static JXTExpression compile(final String expression, boolean xpath)
-        throws Exception {
-        Expression compiled;
-        if (xpath) {
-            compiled = jxpathCompiler.compile(JXPATH, expression);
-        } else {
-            compiled = jexlCompiler.compile(JEXL, expression);
-        }
-        return new JXTExpression(expression, compiled);
-    }
-
-    public static JXTExpression compileBoolean(String val, String msg,
-                                               Locator location) throws SAXException {
-        JXTExpression res = compileExpr(val, msg, location);
-        if (res != null && 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 != null && 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 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
-
-    private JXTExpression(String raw, Object expr) {
+    public JXTExpression(String raw, Object expr) {
         this.raw = raw;
         this.compiledExpression = expr;
     }
 
-    private Object getCompiledExpression() {
+    public Object getCompiledExpression() {
         return compiledExpression;
     }
 
-    private void setCompiledExpression(Object compiledExpression) {
+    public void setCompiledExpression(Object compiledExpression) {
         this.compiledExpression = compiledExpression;
     }
 
-    private String getRaw() {
+    public String getRaw() {
         return raw;
     }
 
@@ -254,6 +139,7 @@
 
     public void setLenient(Boolean lenient) {
         if (this.compiledExpression instanceof Expression)
+            //TODO: hack! bases on particular expression implementation.
             ((Expression)this.compiledExpression).setProperty(JXPathExpression.LENIENT, lenient);
     }
 

Added: 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=279071&view=auto
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java (added)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java Tue Sep  6 12:16:41 2005
@@ -0,0 +1,130 @@
+/*
+ * $Id$
+ *
+ * Created on 2005-09-06
+ *
+ * Copyright (c) 2005, MobileBox sp. z o.o.
+ * All rights reserved.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.apache.cocoon.template.expression;
+
+import java.io.IOException;
+import java.io.StringReader;
+
+import org.apache.cocoon.components.expression.Expression;
+import org.apache.cocoon.components.expression.jexl.JexlCompiler;
+import org.apache.cocoon.components.expression.jxpath.JXPathCompiler;
+import org.apache.cocoon.template.environment.ErrorHolder;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+public class JXTExpressionCompiler {
+    public static JXPathCompiler jxpathCompiler = new JXPathCompiler();
+    public static JexlCompiler jexlCompiler = new JexlCompiler();
+    public static String JXPATH = "jxpath";
+    public static String JEXL = "jexl";
+    public static JXTExpression compile(final String expression, boolean xpath)
+        throws Exception {
+        Expression compiled;
+        if (xpath) {
+            compiled = jxpathCompiler.compile(JXPATH, expression);
+        } else {
+            compiled = jexlCompiler.compile(JEXL, expression);
+        }
+        return new JXTExpression(expression, compiled);
+    }
+    public static JXTExpression compileBoolean(String val, String msg,
+                                               Locator location) throws SAXException {
+        JXTExpression res = JXTExpressionCompiler.compileExpr(val, msg, location);
+        if (res != null && 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 = JXTExpressionCompiler.compileExpr(val, msg, location);
+        if (res != null && 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 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));
+        }
+    }
+
+}

Propchange: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/JXTExpressionCompiler.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/Substitutions.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/Substitutions.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/Substitutions.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/expression/Substitutions.java Tue Sep  6 12:16:41 2005
@@ -68,7 +68,7 @@
                             String str = buf.toString();
                             JXTExpression compiledExpression;
                             try {
-                                compiledExpression = JXTExpression.compile(str, xpath);
+                                compiledExpression = JXTExpressionCompiler.compile(str, xpath);
                             } catch (Exception exc) {
                                 throw new SAXParseException(exc.getMessage(),
                                                             location, exc);

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Attribute.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Attribute.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Attribute.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Attribute.java Tue Sep  6 12:16:41 2005
@@ -8,6 +8,7 @@
 import org.apache.cocoon.components.expression.ExpressionContext;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.apache.cocoon.template.xml.AttributeAwareXMLConsumer;
@@ -34,7 +35,7 @@
             throw new SAXParseException("parameter: \"name\" is required",
                     locator, null);
         }
-        this.name = JXTExpression.compileExpr(name, "parameter: \"name\": ",
+        this.name = JXTExpressionCompiler.compileExpr(name, "parameter: \"name\": ",
                 locator);
 
         String value = attrs.getValue("value");
@@ -42,7 +43,7 @@
             throw new SAXParseException("parameter: \"value\" is required",
                     locator, null);
 
-        this.value = JXTExpression.compileExpr(value, "parameter: \"value\": ",
+        this.value = JXTExpressionCompiler.compileExpr(value, "parameter: \"value\": ",
                 locator);
     }
 

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Call.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Call.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Call.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Call.java Tue Sep  6 12:16:41 2005
@@ -24,6 +24,7 @@
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.AttributeEvent;
 import org.apache.cocoon.template.script.event.Characters;
@@ -73,12 +74,12 @@
             throw new SAXParseException("if: \"test\" is required", locator,
                     null);
         }
-        this.macro = JXTExpression.compileExpr(name, "call: \"macro\": ",
+        this.macro = JXTExpressionCompiler.compileExpr(name, "call: \"macro\": ",
                 locator);
 
         String namespace = StringUtils.defaultString(attrs
                 .getValue("targetNamespace"));
-        this.targetNamespace = JXTExpression.compileExpr(namespace,
+        this.targetNamespace = JXTExpressionCompiler.compileExpr(namespace,
                 "call: \"targetNamespace\": ", locator);
     }
 

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Eval.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Eval.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Eval.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Eval.java Tue Sep  6 12:16:41 2005
@@ -21,6 +21,7 @@
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
@@ -41,7 +42,7 @@
         super(raw);
 
         String select = attrs.getValue("select");
-        this.value = JXTExpression.compileExpr(select, "eval: \"select\":", getLocation());
+        this.value = JXTExpressionCompiler.compileExpr(select, "eval: \"select\":", getLocation());
     }
 
     public Event execute(final XMLConsumer consumer,

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/ForEach.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/ForEach.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/ForEach.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/ForEach.java Tue Sep  6 12:16:41 2005
@@ -22,6 +22,7 @@
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
@@ -54,11 +55,11 @@
 
         String items = attrs.getValue("items");
         String select = attrs.getValue("select");
-        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);
+        this.var = JXTExpressionCompiler.compileExpr(attrs.getValue("var"), null, locator);
+        this.varStatus = JXTExpressionCompiler.compileExpr(attrs.getValue("varStatus"), null, locator);
+        this.begin = JXTExpressionCompiler.compileInt(attrs.getValue("begin"), name, locator);
+        this.end = JXTExpressionCompiler.compileInt(attrs.getValue("end"), name, locator);
+        this.step = JXTExpressionCompiler.compileInt(attrs.getValue("step"), name, locator);
         String lenientValue = attrs.getValue("lenient");
         this.lenient = (lenientValue == null) ? null : Boolean.valueOf(lenientValue);
 
@@ -72,7 +73,7 @@
                                         locator, null);
         }
         
-        this.items = JXTExpression.compileExpr(items == null ? select : items, null, locator);
+        this.items = JXTExpressionCompiler.compileExpr(items == null ? select : items, null, locator);
     }
 
     public Event execute(final XMLConsumer consumer,

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/FormatDate.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/FormatDate.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/FormatDate.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/FormatDate.java Tue Sep  6 12:16:41 2005
@@ -25,6 +25,7 @@
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.apache.cocoon.xml.XMLConsumer;
@@ -54,13 +55,13 @@
 
         Locator locator = getLocation();
 
-        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.var = JXTExpressionCompiler.compileExpr(attrs.getValue("var"), null, locator);
+        this.value = JXTExpressionCompiler.compileExpr(attrs.getValue("value"), null, locator);
+        this.type = JXTExpressionCompiler.compileExpr(attrs.getValue("type"), null, locator);
+        this.pattern = JXTExpressionCompiler.compileExpr(attrs.getValue("pattern"), null, locator);
+        this.timeZone = JXTExpressionCompiler.compileExpr(attrs.getValue("timeZone"), null, locator);
+        this.dateStyle = JXTExpressionCompiler.compileExpr(attrs.getValue("dateStyle"), null, locator);
+        this.timeStyle = JXTExpressionCompiler.compileExpr(attrs.getValue("timeStyle"), null, locator);
     }
 
     public Event execute(final XMLConsumer consumer,

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/FormatNumber.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/FormatNumber.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/FormatNumber.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/FormatNumber.java Tue Sep  6 12:16:41 2005
@@ -26,6 +26,7 @@
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.apache.cocoon.xml.XMLConsumer;
@@ -74,24 +75,24 @@
 
         Locator locator = getLocation();
 
-        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.value = JXTExpressionCompiler.compileExpr(attrs.getValue("value"), null, locator);
+        this.type = JXTExpressionCompiler.compileExpr(attrs.getValue("type"), null, locator);
+        this.pattern = JXTExpressionCompiler.compileExpr(attrs.getValue("pattern"), null, locator);
         this.currencyCode =
-            JXTExpression.compileExpr(attrs.getValue("currencyCode"), null, locator);
+            JXTExpressionCompiler.compileExpr(attrs.getValue("currencyCode"), null, locator);
         this.currencySymbol =
-            JXTExpression.compileExpr(attrs.getValue("currencySymbol"), null, locator);
+            JXTExpressionCompiler.compileExpr(attrs.getValue("currencySymbol"), null, locator);
         this.isGroupingUsed =
-            JXTExpression.compileBoolean(attrs.getValue("isGroupingUsed"), null, locator);
+            JXTExpressionCompiler.compileBoolean(attrs.getValue("isGroupingUsed"), null, locator);
         this.maxIntegerDigits =
-            JXTExpression.compileInt(attrs.getValue("maxIntegerDigits"), null, locator);
+            JXTExpressionCompiler.compileInt(attrs.getValue("maxIntegerDigits"), null, locator);
         this.minIntegerDigits =
-            JXTExpression.compileInt(attrs.getValue("minIntegerDigits"), null, locator);
+            JXTExpressionCompiler.compileInt(attrs.getValue("minIntegerDigits"), null, locator);
         this.maxFractionDigits =
-            JXTExpression.compileInt(attrs.getValue("maxFractionDigits"), null, locator);
+            JXTExpressionCompiler.compileInt(attrs.getValue("maxFractionDigits"), null, locator);
         this.minFractionDigits =
-            JXTExpression.compileInt(attrs.getValue("minFractionDigits"), null, locator);
-        this.var = JXTExpression.compileExpr(attrs.getValue("var"), null, locator);
+            JXTExpressionCompiler.compileInt(attrs.getValue("minFractionDigits"), null, locator);
+        this.var = JXTExpressionCompiler.compileExpr(attrs.getValue("var"), null, locator);
     }
 
     public Event execute(final XMLConsumer consumer,
@@ -148,7 +149,6 @@
             formatted = formatter.format(input);
         } else {
             // no formatting locale available, use toString()
-            //TODO: locale is never null, default in worst case. What's this code for? 
             formatted = input.toString();
         }
         if (var != null) {

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/If.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/If.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/If.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/If.java Tue Sep  6 12:16:41 2005
@@ -21,6 +21,7 @@
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.apache.cocoon.xml.XMLConsumer;
@@ -43,7 +44,7 @@
         Locator locator = getLocation();
         String test = attrs.getValue("test");
         if (test != null) {
-            this.test = JXTExpression.compileExpr(test, "if: \"test\": ", locator);
+            this.test = JXTExpressionCompiler.compileExpr(test, "if: \"test\": ", locator);
             // Why is test lenient?
             this.test.setLenient(Boolean.TRUE);
         } else {

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Import.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Import.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Import.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Import.java Tue Sep  6 12:16:41 2005
@@ -24,6 +24,7 @@
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.expression.Literal;
 import org.apache.cocoon.template.expression.Subst;
 import org.apache.cocoon.template.script.Invoker;
@@ -69,7 +70,7 @@
             // as the context object in the imported template
             String context = attrs.getValue("context");
             if (context != null) {
-                select = JXTExpression.compileExpr(context, "import: \"context\": ", locator);
+                select = JXTExpressionCompiler.compileExpr(context, "import: \"context\": ", locator);
             }
         } else {
             throw new SAXParseException("import: \"uri\" is required", locator, null);

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/LocaleAwareInstruction.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/LocaleAwareInstruction.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/LocaleAwareInstruction.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/LocaleAwareInstruction.java Tue Sep  6 12:16:41 2005
@@ -21,6 +21,7 @@
 import org.apache.cocoon.components.expression.ExpressionContext;
 import org.apache.cocoon.template.environment.ValueHelper;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -33,7 +34,7 @@
 
     public LocaleAwareInstruction(StartElement raw, Attributes attrs, Stack stack) throws SAXException {
         super(raw);
-        this.locale = JXTExpression.compileExpr(attrs.getValue("locale"), null, getLocation());
+        this.locale = JXTExpressionCompiler.compileExpr(attrs.getValue("locale"), null, getLocation());
     }
 
     protected Locale getLocale(ExpressionContext expressionContext) throws Exception {

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Out.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Out.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Out.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Out.java Tue Sep  6 12:16:41 2005
@@ -22,6 +22,7 @@
 import org.apache.cocoon.components.expression.ExpressionContext;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
@@ -54,7 +55,7 @@
         if (value == null)
             throw new SAXParseException("out: \"value\" is required", locator, null);
 
-        this.compiledExpression = JXTExpression.compileExpr(value, "out: \"value\": ", locator);
+        this.compiledExpression = JXTExpressionCompiler.compileExpr(value, "out: \"value\": ", locator);
         String lenientValue = attrs.getValue("lenient");
         Boolean lenient = lenientValue == null ? null : Boolean.valueOf(lenientValue);
 

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/ParameterInstance.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/ParameterInstance.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/ParameterInstance.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/ParameterInstance.java Tue Sep  6 12:16:41 2005
@@ -20,6 +20,7 @@
 import org.apache.cocoon.components.expression.ExpressionContext;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.event.AttributeEvent;
 import org.apache.cocoon.template.script.event.CopyAttribute;
 import org.apache.cocoon.template.script.event.StartElement;
@@ -55,7 +56,7 @@
                 throw new SAXParseException("parameter: \"value\" is required",
                         locator, null);
 
-            this.value = JXTExpression.compileExpr(val,
+            this.value = JXTExpressionCompiler.compileExpr(val,
                     "parameter: \"value\": ", locator);
         }
     }

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Set.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Set.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Set.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/Set.java Tue Sep  6 12:16:41 2005
@@ -20,6 +20,7 @@
 import org.apache.cocoon.components.expression.ExpressionContext;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
@@ -50,10 +51,10 @@
         JXTExpression varExpr = null;
         JXTExpression valueExpr = null;
         if (var != null) {
-            varExpr = JXTExpression.compileExpr(var, "set: \"var\":", locator);
+            varExpr = JXTExpressionCompiler.compileExpr(var, "set: \"var\":", locator);
         }
         if (value != null) {
-            valueExpr = JXTExpression.compileExpr(value, "set: \"value\":", locator);
+            valueExpr = JXTExpressionCompiler.compileExpr(value, "set: \"value\":", locator);
         }
         this.var = varExpr;
         this.value = valueExpr;

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/When.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/When.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/When.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/instruction/When.java Tue Sep  6 12:16:41 2005
@@ -18,6 +18,7 @@
 import java.util.Stack;
 
 import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.xml.sax.Attributes;
 import org.xml.sax.Locator;
@@ -43,7 +44,7 @@
         }
         String test = attrs.getValue("test");
         if (test != null) {
-            this.test = JXTExpression.compileExpr(test, "when: \"test\": ", locator);
+            this.test = JXTExpressionCompiler.compileExpr(test, "when: \"test\": ", locator);
             // Why is test lenient?
             this.test.setLenient(Boolean.TRUE);
             

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/DefaultInstructionFactory.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/DefaultInstructionFactory.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/DefaultInstructionFactory.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/DefaultInstructionFactory.java Tue Sep  6 12:16:41 2005
@@ -123,8 +123,6 @@
     }
 
     public void configure(Configuration omitted) throws ConfigurationException {
-        // do NOT use configuration from cocoon.xconf!
-        // TODO: can we do it in more elegant way?
         SourceResolver resolver = null;
         Source source = null;
         try {

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/DefaultScriptManager.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/DefaultScriptManager.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/DefaultScriptManager.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/DefaultScriptManager.java Tue Sep  6 12:16:41 2005
@@ -21,6 +21,7 @@
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.expression.ExpressionFactory;
 import org.apache.cocoon.components.source.SourceUtil;
 import org.apache.cocoon.template.script.event.StartDocument;
 import org.apache.excalibur.source.Source;
@@ -32,14 +33,15 @@
 import org.xml.sax.SAXParseException;
 
 /**
- * @version SVN $Id$
+ * @version SVN $Id: DefaultScriptManager.java 169632 2005-05-11 12:08:34Z
+ *          lgawron $
  */
-public class DefaultScriptManager extends AbstractLogEnabled implements
-        Serviceable, Disposable, ScriptManager {
+public class DefaultScriptManager extends AbstractLogEnabled implements Serviceable, Disposable, ScriptManager {
     private ServiceManager manager;
     private final static String JX_STORE_PREFIX = "jxtg:";
     private Store store;
     private InstructionFactory instructionFactory;
+    private ExpressionFactory expressionFactory;
 
     public DefaultScriptManager() {
     }
@@ -47,32 +49,30 @@
     public void service(ServiceManager manager) throws ServiceException {
         this.manager = manager;
         this.store = (Store) this.manager.lookup(Store.TRANSIENT_STORE);
-        this.instructionFactory = (InstructionFactory) this.manager
-                .lookup(InstructionFactory.ROLE);
+        this.instructionFactory = (InstructionFactory) this.manager.lookup(InstructionFactory.ROLE);
+        this.expressionFactory = (ExpressionFactory) this.manager.lookup(ExpressionFactory.ROLE);
     }
 
     public void dispose() {
         this.manager.release(this.store);
         this.manager.release(this.instructionFactory);
+        this.manager.release(this.expressionFactory);
     }
 
     private Store getStore() {
         return store;
     }
 
-    public StartDocument resolveTemplate(String uri) throws SAXParseException,
-            ProcessingException {
+    public StartDocument resolveTemplate(String uri) throws SAXParseException, ProcessingException {
         return resolveTemplate(uri, null);
     }
 
-    public StartDocument resolveTemplate(String uri, Locator location)
-            throws SAXParseException, ProcessingException {
+    public StartDocument resolveTemplate(String uri, Locator location) throws SAXParseException, ProcessingException {
         Source input = null;
         StartDocument doc = null;
         SourceResolver resolver = null;
         try {
-            resolver = (SourceResolver) this.manager
-                    .lookup(SourceResolver.ROLE);
+            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
             input = resolver.resolveURI(uri);
             SourceValidity validity = null;
 
@@ -100,8 +100,7 @@
             }
 
             if (doc == null) {
-                Parser parser = new Parser();
-                parser.setInstructionFactory(instructionFactory);
+                Parser parser = new Parser(this.expressionFactory, this.instructionFactory);
                 // call getValidity before using the stream is faster if
                 // the source is a SitemapSource
                 if (validity == null) {
@@ -115,8 +114,7 @@
                 getStore().store(storeUri, doc);
             }
         } catch (SourceException se) {
-            throw SourceUtil.handle("Error during resolving of '" + uri + "'.",
-                    se);
+            throw SourceUtil.handle("Error during resolving of '" + uri + "'.", se);
         } catch (Exception exc) {
             throw new SAXParseException(exc.getMessage(), location, exc);
         } finally {

Modified: cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/Parser.java
URL: http://svn.apache.org/viewcvs/cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/Parser.java?rev=279071&r1=279070&r2=279071&view=diff
==============================================================================
--- cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/Parser.java (original)
+++ cocoon/blocks/template/trunk/java/org/apache/cocoon/template/script/Parser.java Tue Sep  6 12:16:41 2005
@@ -17,8 +17,9 @@
 
 import java.util.Stack;
 
+import org.apache.cocoon.components.expression.ExpressionFactory;
 import org.apache.cocoon.template.JXTemplateGenerator;
-import org.apache.cocoon.template.expression.JXTExpression;
+import org.apache.cocoon.template.expression.JXTExpressionCompiler;
 import org.apache.cocoon.template.instruction.Instruction;
 import org.apache.cocoon.template.script.event.*;
 import org.apache.commons.lang.StringUtils;
@@ -42,14 +43,24 @@
     StringBuffer charBuf;
 
     public static final Locator NULL_LOCATOR = new LocatorImpl();
-    private InstructionFactory instructionFactory;
-
+    protected InstructionFactory instructionFactory;
+    protected ExpressionFactory expressionFactory;
+    
     public Parser() {
     }
 
+    public Parser(ExpressionFactory expressionFactory, InstructionFactory instructionFactory) {
+        this.expressionFactory = expressionFactory;
+        this.instructionFactory = instructionFactory;
+    }
+
     public void setInstructionFactory(InstructionFactory factory) {
         this.instructionFactory = factory;
     }
+    
+    public void setExpressionFactory(ExpressionFactory factory) {
+        this.expressionFactory = factory;
+    }
 
     public StartDocument getStartEvent() {
         return this.startEvent;
@@ -170,7 +181,7 @@
                 // root
                 getStartEvent().getTemplateProperties().put(
                         elementAttributes.getLocalName(i),
-                        JXTExpression.compileExpr(
+                        JXTExpressionCompiler.compileExpr(
                                 elementAttributes.getValue(i), null, locator));
                 elementAttributes.removeAttribute(i--);
             }