You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gk...@apache.org on 2007/07/19 13:48:01 UTC

svn commit: r557585 [1/2] - in /cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template: ./ expression/ instruction/ script/ script/event/

Author: gkossakowski
Date: Thu Jul 19 04:47:58 2007
New Revision: 557585

URL: http://svn.apache.org/viewvc?view=rev&rev=557585
Log:
Merged whiteboard/objectmodel branch changes r556277:557520 into trunk.

Modified:
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/JXTemplateGenerator.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/JXTExpression.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/Substitutions.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Attribute.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Call.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Choose.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Comment.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Define.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Eval.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/EvalBody.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/ForEach.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/FormatDate.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/FormatNumber.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/If.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Import.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/LocaleAwareInstruction.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Out.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/ParameterInstance.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Set.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Template.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/Invoker.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/Characters.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndCDATA.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndDTD.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndDocument.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndElement.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndEntity.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndPrefixMapping.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/Event.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/IgnorableWhitespace.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/ProcessingInstruction.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/SkippedEntity.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/StartCDATA.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/StartDTD.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/StartDocument.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/StartElement.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/StartEntity.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/StartPrefixMapping.java
    cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/TextEvent.java

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/JXTemplateGenerator.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/JXTemplateGenerator.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/JXTemplateGenerator.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/JXTemplateGenerator.java Thu Jul 19 04:47:58 2007
@@ -26,9 +26,9 @@
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.caching.CacheableProcessingComponent;
-import org.apache.cocoon.components.expression.ExpressionContext;
 import org.apache.cocoon.environment.SourceResolver;
 import org.apache.cocoon.generation.ServiceableGenerator;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.FlowObjectModelHelper;
 import org.apache.cocoon.template.environment.JXCacheKey;
@@ -39,6 +39,7 @@
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartDocument;
 import org.apache.cocoon.template.xml.AttributeAwareXMLConsumerImpl;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.RedundantNamespacesFilter;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.apache.excalibur.source.SourceValidity;
@@ -69,7 +70,8 @@
     public final static String CACHE_KEY = "cache-key";
     public final static String VALIDITY = "cache-validity";
 
-    private ExpressionContext expressionContext;
+    private ObjectModel objectModel;
+    private NamespacesTable namespaces;
     private ScriptManager scriptManager;
 
     private StartDocument startDocument;
@@ -103,7 +105,8 @@
      */
     public void recycle() {
         this.startDocument = null;
-        this.expressionContext = null;
+        this.objectModel = null;
+        this.namespaces = null;
         this.definitions = null;
         super.recycle();
     }
@@ -120,7 +123,8 @@
             this.startDocument = scriptManager.resolveTemplate(src);
         }
 
-        this.expressionContext = FlowObjectModelHelper.getFOMExpressionContext(objectModel, parameters);
+        this.objectModel = FlowObjectModelHelper.getNewObjectModelWithFOM(objectModel, parameters);
+        this.namespaces = new NamespacesTable();
         this.definitions = new HashMap();
     }
 
@@ -135,10 +139,12 @@
     }
 
     public void performGeneration(Event startEvent, Event endEvent) throws SAXException {
+        objectModel.markLocalContext();
         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);
+        ((Map) objectModel.get("cocoon")).put("consumer", consumer);
+        Invoker.execute(consumer, this.objectModel, new ExecutionContext(this.definitions, this.scriptManager,
+                this.manager), null, namespaces, startEvent, null);
+        objectModel.cleanupLocalContext();
     }
 
     /**
@@ -151,7 +157,7 @@
             return null;
         }
         try {
-            final Serializable templateKey = (Serializable) cacheKeyExpr.getValue(this.expressionContext);
+            final Serializable templateKey = (Serializable) cacheKeyExpr.getValue(this.objectModel);
             if (templateKey != null) {
                 return new JXCacheKey(this.startDocument.getUri(), templateKey);
             }
@@ -172,7 +178,7 @@
         }
         try {
             final SourceValidity sourceValidity = this.startDocument.getSourceValidity();
-            final SourceValidity templateValidity = (SourceValidity) validityExpr.getValue(this.expressionContext);
+            final SourceValidity templateValidity = (SourceValidity) validityExpr.getValue(this.objectModel);
             if (sourceValidity != null && templateValidity != null) {
                 return new JXSourceValidity(sourceValidity, templateValidity);
             }

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/JXTExpression.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/JXTExpression.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/JXTExpression.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/JXTExpression.java Thu Jul 19 04:47:58 2007
@@ -19,8 +19,8 @@
 import java.util.Iterator;
 
 import org.apache.cocoon.components.expression.Expression;
-import org.apache.cocoon.components.expression.ExpressionContext;
 import org.apache.cocoon.components.expression.jxpath.JXPathExpression;
+import org.apache.cocoon.objectmodel.ObjectModel;
 
 /**
  * @version $Id$
@@ -50,21 +50,21 @@
     // Geting the value of the expression in various forms
 
     // Hack: try to prevent JXPath from converting result to a String
-    public Object getNode(ExpressionContext expressionContext)
+    public Object getNode(ObjectModel objectModel)
         throws Exception {
         Object compiled = this.getCompiledExpression();
         if (compiled instanceof Expression)
-            return ((Expression)compiled).getNode(expressionContext);
+            return ((Expression)compiled).getNode(objectModel);
         return this.getRaw();
     }
 
-    public Iterator getIterator(ExpressionContext expressionContext)
+    public Iterator getIterator(ObjectModel objectModel)
         throws Exception {
         Iterator iter = null;
         if (this.getCompiledExpression() != null || this.getRaw() != null) {
             if (this.getCompiledExpression() instanceof Expression) {
                 iter =
-                    ((Expression)this.getCompiledExpression()).iterate(expressionContext);
+                    ((Expression)this.getCompiledExpression()).iterate(objectModel);
             } else {
                 // literal value
                 iter = new Iterator() {
@@ -91,15 +91,15 @@
         return iter;
     }
 
-    public Boolean getBooleanValue(ExpressionContext expressionContext)
+    public Boolean getBooleanValue(ObjectModel objectModel)
         throws Exception {
-        Object res = getValue(expressionContext);
+        Object res = getValue(objectModel);
         return res instanceof Boolean ? (Boolean)res : null;
     }
 
-    public String getStringValue(ExpressionContext expressionContext)
+    public String getStringValue(ObjectModel objectModel)
         throws Exception {
-        Object res = getValue(expressionContext);
+        Object res = getValue(objectModel);
         if (res != null) {
             return res.toString();
         }
@@ -109,9 +109,9 @@
         return null;
     }
 
-    public Number getNumberValue(ExpressionContext expressionContext)
+    public Number getNumberValue(ObjectModel objectModel)
         throws Exception {
-        Object res = getValue(expressionContext);
+        Object res = getValue(objectModel);
         if (res instanceof Number) {
             return (Number)res;
         }
@@ -121,18 +121,18 @@
         return null;
     }
 
-    public int getIntValue(ExpressionContext expressionContext)
+    public int getIntValue(ObjectModel objectModel)
         throws Exception {
-        Object res = getValue(expressionContext);
+        Object res = getValue(objectModel);
         return res instanceof Number ? ((Number)res).intValue() : 0;
     }
 
-    public Object getValue(ExpressionContext expressionContext)
+    public Object getValue(ObjectModel objectModel)
         throws Exception {
         if (this.getCompiledExpression() != null) {
             Object compiled = this.getCompiledExpression();
             if (compiled instanceof Expression)
-                return ((Expression)compiled).evaluate(expressionContext);
+                return ((Expression)compiled).evaluate(objectModel);
             else
                 return compiled;
         } else

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/Substitutions.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/Substitutions.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/Substitutions.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/expression/Substitutions.java Thu Jul 19 04:47:58 2007
@@ -22,7 +22,7 @@
 import java.util.Iterator;
 import java.util.List;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.xml.sax.Locator;
@@ -67,7 +67,7 @@
         return this.substitutions.get(pos);
     }
 
-    public String toString(Locator location, ExpressionContext expressionContext) throws SAXException {
+    public String toString(Locator location, ObjectModel objectModel) throws SAXException {
         StringBuffer buf = new StringBuffer();
         Iterator iterSubst = iterator();
         while (iterSubst.hasNext()) {
@@ -79,7 +79,7 @@
                 JXTExpression expr = (JXTExpression) subst;
                 Object val;
                 try {
-                    val = expr.getValue(expressionContext);
+                    val = expr.getValue(objectModel);
                 } catch (Exception e) {
                     throw new SAXParseException(e.getMessage(), location, e);
                 } catch (Error err) {

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Attribute.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Attribute.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Attribute.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Attribute.java Thu Jul 19 04:47:58 2007
@@ -19,7 +19,7 @@
 import java.io.StringWriter;
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.JXTemplateGenerator;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
@@ -29,6 +29,7 @@
 import org.apache.cocoon.template.script.event.StartElement;
 import org.apache.cocoon.template.xml.AttributeAwareXMLConsumer;
 import org.apache.cocoon.xml.ContentHandlerWrapper;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.apache.xml.serialize.TextSerializer;
 import org.xml.sax.Attributes;
@@ -61,17 +62,17 @@
         this.value = parsingContext.getStringTemplateParser().compileExpr(value, "parameter: \"value\": ", locator);
     }
 
-    public Event execute(final XMLConsumer consumer, ExpressionContext expressionContext,
-            ExecutionContext executionContext, MacroContext macroContext, Event startEvent, Event endEvent)
+    public Event execute(final XMLConsumer consumer, ObjectModel objectModel,
+            ExecutionContext executionContext, MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent)
             throws SAXException {
 
         String nameStr = null;
         String valueStr = "";
         try {
-            nameStr = this.name.getStringValue(expressionContext);
+            nameStr = this.name.getStringValue(objectModel);
 
             if (this.value != null)
-                valueStr = this.value.getStringValue(expressionContext);
+                valueStr = this.value.getStringValue(objectModel);
             else {
                 final Attributes EMPTY_ATTRS = new AttributesImpl();
                 String elementName = "attribute";
@@ -85,7 +86,7 @@
 
                 // TODO is root element necessary for TextSerializer?
                 contentHandler.startElement(JXTemplateGenerator.NS, elementName, elementName, EMPTY_ATTRS);
-                Invoker.execute(contentHandler, expressionContext, executionContext, macroContext, this.getNext(), this
+                Invoker.execute(contentHandler, objectModel, executionContext, macroContext, namespaces, this.getNext(), this
                         .getEndInstruction());
                 contentHandler.endElement(JXTemplateGenerator.NS, elementName, elementName);
                 contentHandler.endDocument();

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Call.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Call.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Call.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Call.java Thu Jul 19 04:47:58 2007
@@ -21,7 +21,7 @@
 import java.util.Map;
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
@@ -33,6 +33,7 @@
 import org.apache.cocoon.template.script.event.IgnorableWhitespace;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.apache.cocoon.template.script.event.TextEvent;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.apache.commons.lang.StringUtils;
 import org.xml.sax.Attributes;
@@ -97,26 +98,25 @@
     }
 
     public Event execute(XMLConsumer consumer,
-            ExpressionContext expressionContext,
+            ObjectModel objectModel,
             ExecutionContext executionContext, MacroContext macroContext,
-            Event startEvent, Event endEvent) throws SAXException {
+            NamespacesTable namespaces, Event startEvent, Event endEvent) throws SAXException {
         Map attributeMap = new HashMap();
         Iterator i = parameters.keySet().iterator();
         while (i.hasNext()) {
             String parameterName = (String) i.next();
             ParameterInstance parameter = (ParameterInstance) parameters
                     .get(parameterName);
-            Object parameterValue = parameter.getValue(expressionContext);
+            Object parameterValue = parameter.getValue(objectModel);
             attributeMap.put(parameterName, parameterValue);
         }
-        ExpressionContext localExpressionContext = new ExpressionContext(
-                expressionContext);
+        objectModel.markLocalContext();
         HashMap macro = new HashMap();
         macro.put("body", this.body);
         macro.put("arguments", attributeMap);
-        localExpressionContext.put("macro", macro);
+        objectModel.put("macro", macro);
 
-        Define definition = resolveMacroDefinition(expressionContext,
+        Define definition = resolveMacroDefinition(objectModel,
                 executionContext);
         Iterator iter = definition.getParameters().entrySet().iterator();
         while (iter.hasNext()) {
@@ -128,7 +128,7 @@
             if (val == null) {
                 val = default_;
             }
-            localExpressionContext.put(key, val);
+            objectModel.put(key, val);
         }
 
         Event macroBodyStart = getNext();
@@ -142,13 +142,13 @@
         MacroContext newMacroContext = new MacroContext(definition.getQname(),
                 macroBodyStart, macroBodyEnd);
         try {
-            Invoker.execute(consumer, localExpressionContext, executionContext,
-                    newMacroContext, definition.getBody(), definition
-                            .getEndInstruction());
+            Invoker.execute(consumer, objectModel, executionContext,
+                    newMacroContext, namespaces,definition.getBody(), definition.getEndInstruction());
         } catch (SAXParseException exc) {
             throw new SAXParseException(newMacroContext.getMacroQName() + ": "
                     + exc.getMessage(), location, exc);
         }
+        objectModel.cleanupLocalContext();
 
         if (getEndInstruction() != null)
             return getEndInstruction().getNext();
@@ -161,7 +161,7 @@
      * @throws SAXParseException
      */
     private Define resolveMacroDefinition(
-            ExpressionContext expressionContext,
+            ObjectModel objectModel,
             ExecutionContext executionContext) throws SAXParseException {
         if (this.macro instanceof Define)
             return (Define) macro;
@@ -170,8 +170,8 @@
         Object namespace;
         JXTExpression macroNameExpression = (JXTExpression) macro;
         try {
-            macroName = macroNameExpression.getValue(expressionContext);
-            namespace = targetNamespace.getValue(expressionContext);
+            macroName = macroNameExpression.getValue(objectModel);
+            namespace = targetNamespace.getValue(objectModel);
             if (namespace == null)
                 namespace = "";
         } catch (Exception e) {

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Choose.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Choose.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Choose.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Choose.java Thu Jul 19 04:47:58 2007
@@ -18,12 +18,13 @@
 
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -42,14 +43,14 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         When startWhen = this.firstChoice;
         while (startWhen != null) {
             Object val;
             try {
-                val = startWhen.getTest().getValue(expressionContext);
+                val = startWhen.getTest().getValue(objectModel);
             } catch (Exception e) {
                 throw new SAXParseException(e.getMessage(), getLocation(), e);
             }
@@ -60,16 +61,15 @@
                 result = (val != null);
             }
             if (result) {
-                Invoker.execute(consumer, expressionContext, executionContext,
-                                macroContext, startWhen.getNext(),
-                                startWhen.getEndInstruction());
+                Invoker.execute(consumer, objectModel, executionContext,
+                                macroContext, namespaces, startWhen.getNext(), startWhen.getEndInstruction());
                 break;
             }
             startWhen = startWhen.getNextChoice();
         }
         if (startWhen == null && this.otherwise != null) {
-            Invoker.execute(consumer, expressionContext, executionContext,
-                            macroContext, this.otherwise.getNext(),
+            Invoker.execute(consumer, objectModel, executionContext,
+                            macroContext, namespaces, this.otherwise.getNext(),
                             this.otherwise.getEndInstruction());
         }
         return getEndInstruction().getNext();

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Comment.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Comment.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Comment.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Comment.java Thu Jul 19 04:47:58 2007
@@ -20,12 +20,13 @@
 import java.util.Stack;
 
 import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.apache.cocoon.xml.XMLUtils;
 import org.w3c.dom.NodeList;
@@ -43,14 +44,14 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         // Parse the body of the comment
         NodeList nodeList =
             Invoker.toDOMNodeList("comment", this,
-                                  expressionContext, executionContext,
-                                  macroContext);
+                                  objectModel, executionContext,
+                                  macroContext, namespaces);
         // JXPath doesn't handle NodeList, so convert it to an array
         int len = nodeList.getLength();
         final StringBuffer buf = new StringBuffer();

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Define.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Define.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Define.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Define.java Thu Jul 19 04:47:58 2007
@@ -20,7 +20,7 @@
 import java.util.Map;
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.apache.cocoon.template.script.event.Characters;
@@ -28,6 +28,7 @@
 import org.apache.cocoon.template.script.event.IgnorableWhitespace;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.apache.cocoon.template.script.event.TextEvent;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.apache.commons.lang.StringUtils;
 import org.xml.sax.Attributes;
@@ -66,8 +67,8 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         executionContext.getDefinitions().put(this.qname, this);
         return getEndInstruction().getNext();

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Eval.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Eval.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Eval.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Eval.java Thu Jul 19 04:47:58 2007
@@ -18,7 +18,7 @@
 
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
@@ -26,6 +26,7 @@
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -47,11 +48,11 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         try {
-            Object val = this.value.getNode(expressionContext);
+            Object val = this.value.getNode(objectModel);
             if (!(val instanceof StartElement)) {
                 throw new Exception("macro invocation required instead of: " + val);
             }
@@ -59,8 +60,8 @@
             
             //FIXME: eval does not allow to call macro providing macro body
             MacroContext newMacroContext = new MacroContext( call.getQname(), null, null );
-            Invoker.execute(consumer, expressionContext, executionContext,
-                            newMacroContext, call.getNext(), call.getEndElement());
+            Invoker.execute(consumer, objectModel, executionContext,
+                            newMacroContext, namespaces, call.getNext(), call.getEndElement());
         } catch (Exception exc) {
             throw new SAXParseException(exc.getMessage(), getLocation(), exc);
         } catch (Error err) {

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/EvalBody.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/EvalBody.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/EvalBody.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/EvalBody.java Thu Jul 19 04:47:58 2007
@@ -18,13 +18,14 @@
 
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -39,12 +40,12 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         try {
-            Invoker.execute(consumer, expressionContext, executionContext,
-                            null, macroContext.getBodyStart(), macroContext.getBodyEnd());
+            Invoker.execute(consumer, objectModel, executionContext,
+                            null, namespaces, macroContext.getBodyStart(), macroContext.getBodyEnd());
         } catch (Exception exc) {
             throw new SAXParseException(exc.getMessage(), getLocation(), exc);
         } catch (Error err) {

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/ForEach.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/ForEach.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/ForEach.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/ForEach.java Thu Jul 19 04:47:58 2007
@@ -19,7 +19,7 @@
 import java.util.Iterator;
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
@@ -28,6 +28,7 @@
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Attributes;
 import org.xml.sax.Locator;
@@ -78,31 +79,31 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         Iterator iter = null;
         int begin, end, step;
         String var = null, varStatus = null;
         try {
             iter = (this.items != null ) 
-                    ? this.items.getIterator(expressionContext)
+                    ? this.items.getIterator(objectModel)
                     : JXTExpression.NULL_ITER;
             begin = this.begin == null
                 ? 0
-                : this.begin.getIntValue(expressionContext);
+                : this.begin.getIntValue(objectModel);
             end = this.end == null
                 ? Integer.MAX_VALUE
-                : this.end.getIntValue(expressionContext);
+                : this.end.getIntValue(objectModel);
             step = this.step == null
                 ? 1
-                : this.step.getIntValue(expressionContext);
+                : this.step.getIntValue(objectModel);
 
             if ( this.var != null )
-                var = this.var.getStringValue(expressionContext);
+                var = this.var.getStringValue(objectModel);
             
             if ( this.varStatus != null )
-                varStatus = this.varStatus.getStringValue(expressionContext);
+                varStatus = this.varStatus.getStringValue(objectModel);
         } catch (Exception exc) {
             throw new SAXParseException(exc.getMessage(),
                                         getLocation(), exc);
@@ -110,8 +111,7 @@
             throw new SAXParseException(err.getMessage(),
                                         getLocation(), new ErrorHolder(err));
         }
-        ExpressionContext localExpressionContext =
-            new ExpressionContext(expressionContext);
+        objectModel.markLocalContext();
         int i = 0;
         // Move to the begin row
         while (i < begin && iter.hasNext()) {
@@ -125,14 +125,15 @@
             status.setEnd(end);
             status.setStep(step);
             status.setFirst(true);
-            localExpressionContext.put(varStatus, status);
+            objectModel.put(varStatus, status);
         }
         int skipCounter, count = 1;
         while (i <= end && iter.hasNext()) {
+            objectModel.markLocalContext();
             Object value = iter.next();
-            localExpressionContext.setContextBean(value);
+            objectModel.put(ObjectModel.CONTEXTBEAN, value);
             if (var != null) {
-                localExpressionContext.put(var, value);
+                objectModel.put(var, value);
             }
             if (status != null) {
                 status.setIndex(i);
@@ -141,8 +142,8 @@
                 status.setCurrent(value);
                 status.setLast((i == end || !iter.hasNext()));
             }
-            Invoker.execute(consumer, localExpressionContext, executionContext,
-                            macroContext, getNext(), getEndInstruction());
+            Invoker.execute(consumer, objectModel, executionContext,
+                            macroContext, namespaces, getNext(), getEndInstruction());
             // Skip rows
             skipCounter = step;
             while (--skipCounter > 0 && iter.hasNext()) {
@@ -151,7 +152,11 @@
             // Increase index
             i += step;
             count++;
+            
+            objectModel.cleanupLocalContext();
         }
+        objectModel.cleanupLocalContext();
+            
         return getEndInstruction().getNext();
     }
 }

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/FormatDate.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/FormatDate.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/FormatDate.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/FormatDate.java Thu Jul 19 04:47:58 2007
@@ -22,7 +22,7 @@
 import java.util.Stack;
 import java.util.TimeZone;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
@@ -30,6 +30,7 @@
 import org.apache.cocoon.template.expression.StringTemplateParser;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Attributes;
 import org.xml.sax.Locator;
@@ -68,11 +69,11 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         try {
-            String result = format(expressionContext);
+            String result = format(objectModel);
             if (result != null) {
                 char[] chars = result.toCharArray();
                 consumer.characters(chars, 0, chars.length);
@@ -85,21 +86,21 @@
         return getNext();
     }
 
-    private String format(ExpressionContext expressionContext) throws Exception {
-        String var = this.var == null ? null : this.var.getStringValue(expressionContext);
-        Object value = this.value == null ? null : this.value.getValue(expressionContext);
-
-        String pattern = this.pattern == null ? null : this.pattern.getStringValue(expressionContext);
-        Object timeZone = this.timeZone == null ? null : this.timeZone.getValue(expressionContext);
-
-        String type = this.type == null ? null : this.type.getStringValue(expressionContext);
-        String timeStyle = this.timeStyle == null ? null : this.timeStyle.getStringValue(expressionContext);
-        String dateStyle = this.dateStyle == null ? null : this.dateStyle.getStringValue(expressionContext);
+    private String format(ObjectModel objectModel) throws Exception {
+        String var = this.var == null ? null : this.var.getStringValue(objectModel);
+        Object value = this.value == null ? null : this.value.getValue(objectModel);
+
+        String pattern = this.pattern == null ? null : this.pattern.getStringValue(objectModel);
+        Object timeZone = this.timeZone == null ? null : this.timeZone.getValue(objectModel);
+
+        String type = this.type == null ? null : this.type.getStringValue(objectModel);
+        String timeStyle = this.timeStyle == null ? null : this.timeStyle.getStringValue(objectModel);
+        String dateStyle = this.dateStyle == null ? null : this.dateStyle.getStringValue(objectModel);
 
         String formatted = null;
 
         // Create formatter
-        Locale locale = getLocale( expressionContext );
+        Locale locale = getLocale( objectModel );
         DateFormat formatter = createFormatter(locale, type, dateStyle,
                 timeStyle);
         // Apply pattern, if present
@@ -130,7 +131,7 @@
         }
         formatted = formatter.format(value);
         if (var != null) {
-            expressionContext.put(var, formatted);
+            objectModel.put(var, formatted);
             return null;
         }
         return formatted;

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/FormatNumber.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/FormatNumber.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/FormatNumber.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/FormatNumber.java Thu Jul 19 04:47:58 2007
@@ -23,7 +23,7 @@
 import java.util.Locale;
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
@@ -31,6 +31,7 @@
 import org.apache.cocoon.template.expression.StringTemplateParser;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.apache.commons.lang.StringUtils;
 import org.xml.sax.Attributes;
@@ -97,11 +98,11 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         try {
-            String result = format(expressionContext);
+            String result = format(objectModel);
             if (result != null) {
                 char[] chars = result.toCharArray();
                 consumer.characters(chars, 0, chars.length);
@@ -115,21 +116,21 @@
         return getNext();
     }
 
-    private String format(ExpressionContext expressionContext) throws Exception {
+    private String format(ObjectModel objectModel) throws Exception {
         // Determine formatting locale
-        String var = this.var == null ? null : this.var.getStringValue(expressionContext);
-        Number input = this.value.getNumberValue(expressionContext);
-        String type = this.type == null ? null : this.type.getStringValue(expressionContext);
-        String pattern = this.pattern == null ? null : this.pattern.getStringValue(expressionContext);
-        String currencyCode = this.currencyCode == null ? null : this.currencyCode.getStringValue(expressionContext);
-        String currencySymbol = this.currencySymbol == null ? null : this.currencySymbol.getStringValue(expressionContext);
-        Boolean isGroupingUsed = this.isGroupingUsed == null ? null : this.isGroupingUsed.getBooleanValue(expressionContext);
-        Number maxIntegerDigits = this.maxIntegerDigits == null ? null : this.maxIntegerDigits.getNumberValue(expressionContext);
-        Number minIntegerDigits = this.minIntegerDigits == null ? null : this.minIntegerDigits.getNumberValue(expressionContext);
-        Number maxFractionDigits = this.maxFractionDigits == null ? null : this.maxFractionDigits.getNumberValue(expressionContext);
-        Number minFractionDigits = this.minFractionDigits == null ? null : this.minFractionDigits.getNumberValue(expressionContext);
+        String var = this.var == null ? null : this.var.getStringValue(objectModel);
+        Number input = this.value.getNumberValue(objectModel);
+        String type = this.type == null ? null : this.type.getStringValue(objectModel);
+        String pattern = this.pattern == null ? null : this.pattern.getStringValue(objectModel);
+        String currencyCode = this.currencyCode == null ? null : this.currencyCode.getStringValue(objectModel);
+        String currencySymbol = this.currencySymbol == null ? null : this.currencySymbol.getStringValue(objectModel);
+        Boolean isGroupingUsed = this.isGroupingUsed == null ? null : this.isGroupingUsed.getBooleanValue(objectModel);
+        Number maxIntegerDigits = this.maxIntegerDigits == null ? null : this.maxIntegerDigits.getNumberValue(objectModel);
+        Number minIntegerDigits = this.minIntegerDigits == null ? null : this.minIntegerDigits.getNumberValue(objectModel);
+        Number maxFractionDigits = this.maxFractionDigits == null ? null : this.maxFractionDigits.getNumberValue(objectModel);
+        Number minFractionDigits = this.minFractionDigits == null ? null : this.minFractionDigits.getNumberValue(objectModel);
         
-        Locale loc = getLocale(expressionContext);
+        Locale loc = getLocale(objectModel);
         String formatted;
         if (loc != null) {
             // Create formatter
@@ -153,7 +154,7 @@
             formatted = input.toString();
         }
         if (var != null) {
-            expressionContext.put(var, formatted);
+            objectModel.put(var, formatted);
             return null;
         }
         return formatted;

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/If.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/If.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/If.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/If.java Thu Jul 19 04:47:58 2007
@@ -18,13 +18,14 @@
 
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.apache.cocoon.template.expression.JXTExpression;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Attributes;
 import org.xml.sax.Locator;
@@ -54,13 +55,13 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
 
         Object val;
         try {
-            val = this.test.getValue(expressionContext);
+            val = this.test.getValue(objectModel);
         } catch (Exception e) {
             throw new SAXParseException(e.getMessage(), getLocation(), e);
         } catch (Error err) {

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Import.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Import.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Import.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Import.java Thu Jul 19 04:47:58 2007
@@ -20,8 +20,8 @@
 import java.util.Stack;
 
 import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.components.expression.ExpressionContext;
 import org.apache.cocoon.environment.TemplateObjectModelHelper;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
@@ -35,6 +35,7 @@
 import org.apache.cocoon.template.script.event.StartDocument;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.apache.cocoon.template.script.event.SubstituteAttribute;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Attributes;
 import org.xml.sax.Locator;
@@ -81,8 +82,8 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         String uri;
         AttributeEvent e = this.uri;
@@ -102,7 +103,7 @@
                     JXTExpression expr = (JXTExpression) subst;
                     Object val;
                     try {
-                        val = expr.getValue(expressionContext);
+                        val = expr.getValue(objectModel);
                     } catch (Exception exc) {
                         throw new SAXParseException(exc.getMessage(), getLocation(), exc);
                     } catch (Error err) {
@@ -120,13 +121,12 @@
         } catch (ProcessingException exc) {
             throw new SAXParseException(exc.getMessage(), getLocation(), exc);
         }
-        ExpressionContext selectExpressionContext = expressionContext;
+        objectModel.markLocalContext();
         if (this.select != null) {
             try {
-                Object obj = this.select.getValue(expressionContext);
-                selectExpressionContext = new ExpressionContext(expressionContext);
-                selectExpressionContext.setContextBean(obj);
-                TemplateObjectModelHelper.fillContext(obj, selectExpressionContext);
+                Object obj = this.select.getValue(objectModel);
+                objectModel.put(ObjectModel.CONTEXTBEAN, obj);
+                TemplateObjectModelHelper.fillContext(obj, objectModel);
             } catch (Exception exc) {
                 throw new SAXParseException(exc.getMessage(), getLocation(), exc);
             } catch (Error err) {
@@ -135,13 +135,16 @@
             }
         }
         try {
-            Invoker.execute(consumer, expressionContext, executionContext,
-                            macroContext, doc.getNext(), doc.getEndDocument());
+            Invoker.execute(consumer, objectModel, executionContext,
+                            macroContext, namespaces, doc.getNext(), doc.getEndDocument());
         } catch (Exception exc) {
             throw new SAXParseException(
                                         "Exception occurred in imported template " + uri
                                         + ": " + exc.getMessage(), getLocation(), exc);
         }
+        
+        objectModel.cleanupLocalContext();
+        
         return getEndInstruction().getNext();
     }
 }

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/LocaleAwareInstruction.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/LocaleAwareInstruction.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/LocaleAwareInstruction.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/LocaleAwareInstruction.java Thu Jul 19 04:47:58 2007
@@ -19,7 +19,7 @@
 import java.util.Locale;
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.apache.cocoon.template.environment.ValueHelper;
 import org.apache.cocoon.template.expression.JXTExpression;
@@ -38,12 +38,12 @@
         this.locale = parsingContext.getStringTemplateParser().compileExpr(attrs.getValue("locale"), null, getLocation());
     }
 
-    protected Locale getLocale(ExpressionContext expressionContext) throws Exception {
+    protected Locale getLocale(ObjectModel objectModel) throws Exception {
         Object locVal = null;
         if (this.locale != null) {
-            locVal = this.locale.getValue(expressionContext);
+            locVal = this.locale.getValue(objectModel);
             if (locVal == null)
-                locVal = this.locale.getStringValue(expressionContext);
+                locVal = this.locale.getStringValue(objectModel);
         }
 
         if (locVal != null)

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Out.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Out.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Out.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Out.java Thu Jul 19 04:47:58 2007
@@ -20,7 +20,7 @@
 import java.util.Stack;
 
 import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.apache.cocoon.template.expression.JXTExpression;
@@ -28,6 +28,7 @@
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.apache.cocoon.xml.IncludeXMLConsumer;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.apache.commons.lang.BooleanUtils;
 import org.apache.excalibur.xml.sax.SAXParser;
@@ -72,12 +73,12 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         Object val;
         try {
-            val = this.compiledExpression.getNode(expressionContext);
+            val = this.compiledExpression.getNode(objectModel);
             
             boolean stripRoot = BooleanUtils.toBoolean(this.stripRoot);
             //TODO: LG, I do not see a good way to do this.

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/ParameterInstance.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/ParameterInstance.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/ParameterInstance.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/ParameterInstance.java Thu Jul 19 04:47:58 2007
@@ -18,7 +18,7 @@
 
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.apache.cocoon.template.expression.JXTExpression;
@@ -68,9 +68,9 @@
         return name;
     }
 
-    public Object getValue(ExpressionContext expressionContext) throws SAXException {
+    public Object getValue(ObjectModel objectModel) throws SAXException {
         if (this.value instanceof JXTExpression)
-            return getExpressionValue((JXTExpression) this.value, expressionContext);
+            return getExpressionValue((JXTExpression) this.value, objectModel);
         else if (this.value instanceof CopyAttribute) {
             CopyAttribute copy = (CopyAttribute) this.value;
             return copy.getValue();
@@ -78,19 +78,19 @@
             SubstituteAttribute substEvent = (SubstituteAttribute) this.value;
             if (substEvent.getSubstitutions().size() == 1
                     && substEvent.getSubstitutions().get(0) instanceof JXTExpression)
-                return getExpressionValue((JXTExpression) substEvent.getSubstitutions().get(0), expressionContext);
+                return getExpressionValue((JXTExpression) substEvent.getSubstitutions().get(0), objectModel);
             else
-                return substEvent.getSubstitutions().toString(getLocation(), expressionContext);
+                return substEvent.getSubstitutions().toString(getLocation(), objectModel);
 
         } else {
             throw new Error("this shouldn't have happened");
         }
     }
 
-    private Object getExpressionValue(JXTExpression expr, ExpressionContext expressionContext) throws SAXException {
+    private Object getExpressionValue(JXTExpression expr, ObjectModel objectModel) throws SAXException {
         Object val;
         try {
-            val = expr.getNode(expressionContext);
+            val = expr.getNode(objectModel);
         } catch (Exception e) {
             throw new SAXParseException(e.getMessage(), getLocation(), e);
         } catch (Error err) {

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Set.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Set.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Set.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Set.java Thu Jul 19 04:47:58 2007
@@ -18,13 +18,14 @@
 
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.apache.cocoon.template.expression.JXTExpression;
 import org.apache.cocoon.template.script.Invoker;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -62,27 +63,25 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
 
         Object value = null;
         String var = null;
         try {
             if (this.var != null) {
-                var = this.var.getStringValue(expressionContext);
+                var = this.var.getStringValue(objectModel);
             }
             if (this.value != null) {
-                value = this.value.getNode(expressionContext);
+                value = this.value.getNode(objectModel);
             }
         } catch (Exception exc) {
             throw new SAXParseException(exc.getMessage(), getLocation(), exc);
         }
         if (this.value == null) {
             NodeList nodeList =
-                Invoker.toDOMNodeList("set", this,
-                                      expressionContext, executionContext,
-                                      macroContext);
+                Invoker.toDOMNodeList("set", this, objectModel, executionContext, macroContext, namespaces);
             // JXPath doesn't handle NodeList, so convert it to an array
             int len = nodeList.getLength();
             Node[] nodeArr = new Node[len];
@@ -92,7 +91,7 @@
             value = nodeArr;
         }
         if (var != null) {
-            expressionContext.put(var, value);
+            objectModel.put(var, value);
         }
         return getEndInstruction().getNext();
     }

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Template.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Template.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Template.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/instruction/Template.java Thu Jul 19 04:47:58 2007
@@ -18,11 +18,12 @@
 
 import java.util.Stack;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -36,8 +37,8 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext, ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         ObjectModel objectModel, ExecutionContext executionContext,
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         // EMPTY
         return getNext();

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/Invoker.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/Invoker.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/Invoker.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/Invoker.java Thu Jul 19 04:47:58 2007
@@ -16,7 +16,7 @@
  */
 package org.apache.cocoon.template.script;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.JXTemplateGenerator;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.LocatorFacade;
@@ -27,6 +27,7 @@
 import org.apache.cocoon.template.script.event.Event;
 import org.apache.cocoon.template.script.event.StartElement;
 import org.apache.cocoon.xml.IncludeXMLConsumer;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.apache.cocoon.xml.dom.DOMBuilder;
 import org.apache.cocoon.xml.dom.DOMStreamer;
@@ -45,8 +46,8 @@
     private static final Attributes EMPTY_ATTRS = new AttributesImpl();
 
     public static void execute(final XMLConsumer consumer,
-            ExpressionContext expressionContext,
-            ExecutionContext executionContext, MacroContext macroContext,
+            ObjectModel objectModel,
+            ExecutionContext executionContext, MacroContext macroContext, NamespacesTable namespaces,
             Event startEvent, Event endEvent) throws SAXException {
 
         Event ev = startEvent;
@@ -61,17 +62,17 @@
                 Define def = (Define) executionContext
                         .getDefinitions().get(startElement.getQname());
                 if (def == null) {
-                    ev = ev.execute(consumer, expressionContext,
-                            executionContext, macroContext, startEvent, endEvent);
+                    ev = ev.execute(consumer, objectModel,
+                            executionContext, macroContext, namespaces, startEvent, endEvent);
                     continue;
                 }
 
                 Call call = new Call( def, startElement );
-                ev = call.execute(consumer, expressionContext,
-                        executionContext, macroContext, startEvent, endEvent);
+                ev = call.execute(consumer, objectModel,
+                        executionContext, macroContext, null, startEvent, endEvent);
             } else
-                ev = ev.execute(consumer, expressionContext, executionContext,
-                        macroContext, startEvent, endEvent);
+                ev = ev.execute(consumer, objectModel, executionContext,
+                        macroContext, namespaces, startEvent, endEvent);
         }
     }
 
@@ -126,15 +127,14 @@
     }
 
     public static NodeList toDOMNodeList(String elementName,
-            Instruction si, ExpressionContext expressionContext,
-            ExecutionContext executionContext, MacroContext macroContext)
+            Instruction si, ObjectModel objectModel,
+            ExecutionContext executionContext, MacroContext macroContext, NamespacesTable namespaces)
             throws SAXException {
         DOMBuilder builder = new DOMBuilder();
         builder.startDocument();
         builder.startElement(JXTemplateGenerator.NS, elementName, elementName,
                 EMPTY_ATTRS);
-        execute(builder, expressionContext, executionContext, macroContext, si
-                .getNext(), si.getEndInstruction());
+        execute(builder, objectModel, executionContext, macroContext, namespaces, si.getNext(), si.getEndInstruction());
         builder.endElement(JXTemplateGenerator.NS, elementName, elementName);
         builder.endDocument();
         Node node = builder.getDocument().getDocumentElement();

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/Characters.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/Characters.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/Characters.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/Characters.java Thu Jul 19 04:47:58 2007
@@ -18,7 +18,7 @@
 
 import java.util.Iterator;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ErrorHolder;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.environment.ParsingContext;
@@ -27,6 +27,7 @@
 import org.apache.cocoon.template.expression.Subst;
 import org.apache.cocoon.template.instruction.MacroContext;
 import org.apache.cocoon.template.script.Invoker;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -42,9 +43,9 @@
     }
 
     public Event execute(XMLConsumer consumer,
-            ExpressionContext expressionContext,
+            ObjectModel objectModel,
             ExecutionContext executionContext, MacroContext macroContext,
-            Event startEvent, Event endEvent) throws SAXException {
+            NamespacesTable namespaces, Event startEvent, Event endEvent) throws SAXException {
         Iterator iter = getSubstitutions().iterator();
         while (iter.hasNext()) {
             Subst subst = (Subst) iter.next();
@@ -55,7 +56,7 @@
             } else {
                 JXTExpression expr = (JXTExpression) subst;
                 try {
-                    Object val = expr.getNode(expressionContext);
+                    Object val = expr.getNode(objectModel);
                     Invoker.executeNode(consumer, val);
                 } catch (Exception e) {
                     throw new SAXParseException(e.getMessage(), getLocation(), e);

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndCDATA.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndCDATA.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndCDATA.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndCDATA.java Thu Jul 19 04:47:58 2007
@@ -16,9 +16,10 @@
  */
 package org.apache.cocoon.template.script.event;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.instruction.MacroContext;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -32,9 +33,9 @@
     }
     
     public Event execute(XMLConsumer consumer,
-            ExpressionContext expressionContext,
+            ObjectModel objectModel,
             ExecutionContext executionContext, MacroContext macroContext,
-            Event startEvent, Event endEvent) throws SAXException {
+            NamespacesTable namespaces, Event startEvent, Event endEvent) throws SAXException {
         consumer.endCDATA();
         return getNext();
     }

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndDTD.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndDTD.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndDTD.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndDTD.java Thu Jul 19 04:47:58 2007
@@ -16,9 +16,10 @@
  */
 package org.apache.cocoon.template.script.event;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.instruction.MacroContext;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -33,9 +34,9 @@
     
     
     public Event execute(XMLConsumer consumer,
-            ExpressionContext expressionContext,
+            ObjectModel objectModel,
             ExecutionContext executionContext, MacroContext macroContext,
-            Event startEvent, Event endEvent) throws SAXException {
+            NamespacesTable namespaces, Event startEvent, Event endEvent) throws SAXException {
         consumer.endDTD();
         return getNext();
     }

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndDocument.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndDocument.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndDocument.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndDocument.java Thu Jul 19 04:47:58 2007
@@ -16,9 +16,10 @@
  */
 package org.apache.cocoon.template.script.event;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.instruction.MacroContext;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -32,9 +33,9 @@
     }
     
     public Event execute(XMLConsumer consumer,
-            ExpressionContext expressionContext,
+            ObjectModel objectModel,
             ExecutionContext executionContext, MacroContext macroContext,
-            Event startEvent, Event endEvent) throws SAXException {
+            NamespacesTable namespaces, Event startEvent, Event endEvent) throws SAXException {
         consumer.endDocument();
         return getNext();
     }

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndElement.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndElement.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndElement.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndElement.java Thu Jul 19 04:47:58 2007
@@ -16,9 +16,10 @@
  */
 package org.apache.cocoon.template.script.event;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.instruction.MacroContext;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -39,14 +40,15 @@
     }
 
     public Event execute(XMLConsumer consumer,
-            ExpressionContext expressionContext,
+            ObjectModel objectModel,
             ExecutionContext executionContext, MacroContext macroContext,
-            Event startEvent, Event endEvent) throws SAXException {
+            NamespacesTable namespaces, Event startEvent, Event endEvent) throws SAXException {
         consumer.endElement(startElement.getNamespaceURI(), startElement
                 .getLocalName(), startElement.getRaw());
 
         // Send any pending endPrefixMapping events
-        expressionContext.getNamespaces().leaveScope(consumer);
+        namespaces.leaveScope(consumer);
+        
         return getNext();
     }
 }

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndEntity.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndEntity.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndEntity.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndEntity.java Thu Jul 19 04:47:58 2007
@@ -16,9 +16,10 @@
  */
 package org.apache.cocoon.template.script.event;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.instruction.MacroContext;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -40,9 +41,9 @@
     
     
     public Event execute(XMLConsumer consumer,
-            ExpressionContext expressionContext,
+            ObjectModel objectModel,
             ExecutionContext executionContext, MacroContext macroContext,
-            Event startEvent, Event endEvent) throws SAXException {
+            NamespacesTable namespaces, Event startEvent, Event endEvent) throws SAXException {
         consumer.endEntity( getName() );
         return getNext();
     }

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndPrefixMapping.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndPrefixMapping.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndPrefixMapping.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/EndPrefixMapping.java Thu Jul 19 04:47:58 2007
@@ -16,9 +16,10 @@
  */
 package org.apache.cocoon.template.script.event;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.instruction.MacroContext;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -39,11 +40,14 @@
     }
 
     public Event execute(XMLConsumer consumer,
-            ExpressionContext expressionContext,
+            ObjectModel objectModel,
             ExecutionContext executionContext, MacroContext macroContext,
-            Event startEvent, Event endEvent) throws SAXException {
+            NamespacesTable namespaces, Event startEvent, Event endEvent) throws SAXException {
+        
+        // (endPrefixMapping is sent in EndElement)
+        
+        objectModel.cleanupLocalContext();
         
-        // nothing (endPrefixMapping is sent in EndElement)
         return getNext();
     }
 }

Modified: cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/Event.java
URL: http://svn.apache.org/viewvc/cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/Event.java?view=diff&rev=557585&r1=557584&r2=557585
==============================================================================
--- cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/Event.java (original)
+++ cocoon/trunk/blocks/cocoon-template/cocoon-template-impl/src/main/java/org/apache/cocoon/template/script/event/Event.java Thu Jul 19 04:47:58 2007
@@ -16,9 +16,10 @@
  */
 package org.apache.cocoon.template.script.event;
 
-import org.apache.cocoon.components.expression.ExpressionContext;
+import org.apache.cocoon.objectmodel.ObjectModel;
 import org.apache.cocoon.template.environment.ExecutionContext;
 import org.apache.cocoon.template.instruction.MacroContext;
+import org.apache.cocoon.xml.NamespacesTable;
 import org.apache.cocoon.xml.XMLConsumer;
 import org.xml.sax.Locator;
 import org.xml.sax.SAXException;
@@ -65,9 +66,9 @@
     }
 
     public Event execute(final XMLConsumer consumer,
-                         ExpressionContext expressionContext,
+                         ObjectModel objectModel,
                          ExecutionContext executionContext,
-                         MacroContext macroContext, Event startEvent, Event endEvent) 
+                         MacroContext macroContext, NamespacesTable namespaces, Event startEvent, Event endEvent) 
         throws SAXException {
         return getNext();
     }