Author: ekoneil
Date: Sun Nov 28 10:15:40 2004
New Revision: 106823

URL: http://svn.apache.org/viewcvs?view=rev&rev=106823
Log:
Checkpoint the rework the API to the NetUI expression language.

Previously, this used a propreitary object (ImplicitObjectBean) to transport 
implicit objects into the expression engine.  Now, this is hidden behind a 
VariableResolver which can be decorated to expose a different API atop the JSP 
2.0 standard VariableResolver.

Callers of the expression engine now call methods on the ImplicitObjectUtil 
class to get a VR to use for reads and updates.

Also:
- generally cleanup the EL tests
- delete empty directories fauxServlet and testBeans
- remove un-needed entries from the netui config files

This is stage one of a two stage process; left-over methods / classes will be 
deleted next.

BB: self
DRT: NetUI pass (win)
BVT: NetUI pass (win)


Removed:
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ApplicationAttributeMap.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/PageContextAttributeMap.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestParameterMap.java
   
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/script/
   incubator/beehive/trunk/netui/test/src/fauxServlet/
   incubator/beehive/trunk/netui/test/src/testBeans/
Modified:
   incubator/beehive/trunk/netui/build.xml
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ProcessPopulate.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluator.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluatorFactory.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleContext.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionParseException.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionTerm.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/LiteralTerm.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIVariableResolver.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ParsedExpression.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/Term.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/tokens/ExpressionToken.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMap.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMap.java
   
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java
   
incubator/beehive/trunk/netui/src/webapp-template/config/netui-config-default.xml
   
incubator/beehive/trunk/netui/src/webapp-template/default/WEB-INF/netui-config.xml
   
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AbstractExpressionTest.java
   
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AccessTest.java
   
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/BundleScriptTest.java
   
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionTest.java
   
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java
   
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/PageInputTest.java
   
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELCustomBindingContextTest.java
   
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELExpressionUpdateTest.java
   
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELPageInputTest.java
   
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/servlet/FauxPageContext.java
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml

Modified: incubator/beehive/trunk/netui/build.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/build.xml?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/build.xml&r1=106822&p2=incubator/beehive/trunk/netui/build.xml&r2=106823
==============================================================================
--- incubator/beehive/trunk/netui/build.xml     (original)
+++ incubator/beehive/trunk/netui/build.xml     Sun Nov 28 10:15:40 2004
@@ -81,7 +81,7 @@
         </ant>
     </target>
 
-    <target name="undeploy.netui" 
+    <target name="undeploy.netui"     
             description="Undeploy the NetUI runtime from a fully-quaflified 
webapp directory specified with the property 'webapp.dir'">
         <echo>Undeploy NetUI from webapp rooted at: ${webapp.dir}</echo>
 
@@ -91,9 +91,8 @@
         </ant>
     </target>
 
-    <target name="create.beehive.webapp" description="Utility target that will 
create a Beehive enabled webapp using the properties webapp.dir and 
context.path">
+    <target name="create.netui.webapp" description="Utility target that will 
create a Beehive enabled webapp using the properties webapp.dir">
         <fail unless="webapp.dir" message="The ${webapp.dir} property is 
unset"/>
-        <fail unless="context.path" message="The ${context.path} property is 
unset"/>
 
         <copy todir="${webapp.dir}" overwrite="true">
             <fileset dir="${os.BEEHIVE_HOME}/netui/build/dist/webapp"/>

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ProcessPopulate.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ProcessPopulate.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ProcessPopulate.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ProcessPopulate.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ProcessPopulate.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ProcessPopulate.java
   Sun Nov 28 10:15:40 2004
@@ -17,26 +17,27 @@
  */
 package org.apache.beehive.netui.pageflow;
 
-// java imports
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import javax.servlet.ServletException;
+import javax.servlet.jsp.el.VariableResolver;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 import org.apache.beehive.netui.script.Expression;
 import org.apache.beehive.netui.script.ExpressionEvaluator;
 import org.apache.beehive.netui.script.ExpressionEvaluatorFactory;
 import org.apache.beehive.netui.script.ExpressionUpdateException;
-import org.apache.beehive.netui.script.common.ImplicitObjectBean;
+import org.apache.beehive.netui.script.el.NetUIUpdateVariableResolver;
 import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
 import org.apache.beehive.netui.util.Bundle;
 import org.apache.beehive.netui.util.logging.Logger;
+
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.struts.action.ActionForm;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
 /**
  * Implement the processPopulate stage of the Struts / PageFlow request
  * processing lifecycle.  The [EMAIL PROTECTED] #populate(HttpServletRequest, 
HttpServletResponse, ActionForm, boolean)} method is 
@@ -48,7 +49,6 @@
  * Updates are performed on a key / value pair if the key is an expression; 
otherwise,
  * the updates are delegated to the Struts processPopulate infrastructure.
  * 
- * @exclude
  */
 public class ProcessPopulate
 {
@@ -181,15 +181,15 @@
             return;
         }
 
-            // only needs to happen once; all of the objects herein are stable
-        ImplicitObjectBean bean = 
ImplicitObjectUtil.getImplicitObjects(request, response, form);
+        /* explicitly build a variable resolver that is used to provide 
objects that may be updated to the expression engine */
+        VariableResolver variableResolver = 
ImplicitObjectUtil.getUpdateVariableResolver(form, request, response, true);
 
         String[] idMap = (String[]) params.get(IDMAP_PARAMETER_NAME);
         if (idMap != null) {
             expressionMap = IdMapper.getExpressionMap(idMap[0]);
         }
 
-        // TODO: are there any ordering issues with using an Iterator vs. an 
Enumeration here?
+        /* todo: are there any ordering issues with using an Iterator vs. an 
Enumeration here? */
         Iterator iterator = params.keySet().iterator();
         while (iterator.hasNext())
         {
@@ -250,14 +250,14 @@
                         {
                             // common case, make this fast
                             if (!requestHasPopulated)
-                                ee.update(expr, updateValue, bean, true);
+                                ee.update(expr, updateValue, variableResolver, 
true);
                             // must check the expression to make sure 
pageFlow. and globalApp. don't get executed more than once
                             else
                             {
                                 Expression pe = ee.parseExpression(expr);
                                 String contextName = pe.getContext();
                                 if (!contextName.equals(PAGE_FLOW_CONTEXT) && 
!contextName.equals(GLOBAL_APP_CONTEXT))
-                                    ee.update(expr, updateValue, bean, true);
+                                    ee.update(expr, updateValue, 
variableResolver, true);
                             }
                         }
                     }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluator.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluator.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluator.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluator.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluator.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluator.java
 Sun Nov 28 10:15:40 2004
@@ -17,12 +17,7 @@
  */
 package org.apache.beehive.netui.script;
 
-// java imports
-
-// internal imports
-import org.apache.beehive.netui.script.common.ImplicitObjectBean;
-
-// external imports
+import javax.servlet.jsp.el.VariableResolver;
 
 /**
  * An interface for evaluating expressions in NetUI.  Different languages may 
implement
@@ -35,12 +30,12 @@
      * Evaluate an expression and return the result.
      * 
      * @param expression the expression to evaluate
-     * @param implicitObjects the set of contexts that may be used in 
expression evaluation.  This set
+     * @param variableResolver the set of contexts that may be used in 
expression evaluation.  This set
      * is not necessarily complete as some objects that can be used as 
top-level expression contexts
      * may be contained within an object available in this JavaBean.
      * @throws ExpressionEvaluationException when an error occurs
      */
-    public Object evaluateStrict(String expression, ImplicitObjectBean 
implicitObjects) 
+    public Object evaluateStrict(String expression, VariableResolver 
variableResolver)
         throws ExpressionEvaluationException;
 
     /**
@@ -51,14 +46,13 @@
      *
      * @param expression the expression whose value to update
      * @param value the new value for the update
-     * @param implicitObjects the set of contexts that may be used in 
expression evaluation.  This set
+     * @param variableResolver the set of contexts that may be used in 
expression evaluation.  This set
      * is not necessarily complete as some objects that can be used as 
top-level expression contexts
      * may be contained within an object available in this JavaBean.
      * @param requestParameter a boolean that marks this update as occurring 
from data in the request, if 
      * <code>true</code> or simply as a regular update. 
-     * @throws ExcpressionUpdateException when an error occurs
      */
-    public void update(String expression, Object value, ImplicitObjectBean 
implicitObjects, boolean requestParameter) 
+    public void update(String expression, Object value, VariableResolver 
variableResolver, boolean requestParameter)
         throws ExpressionUpdateException;
 
     /**
@@ -70,7 +64,6 @@
      * @param oldContext the old context to replace, if present
      * @param newContext the new context to replace if the expression starts 
with the <code>oldContext</code>
      * @param lookupIndex an index used to qualify an expression into an array 
look-up.
-     * @throws ExcpressionUpdateException when an error occurs
      * @exclude
      */
     public String changeContext(String expression, String oldContext, String 
newContext, int lookupIndex) 
@@ -82,7 +75,6 @@
      *
      * @param contextName the new context
      * @param expression the expression to qualify
-     * @throws ExcpressionUpdateException when an error occurs
      * @exclude
      */
     public String qualify(String contextName, String expression) 
@@ -113,7 +105,6 @@
      *
      * @param expression the String expression to parse
      * @return the parsed expression
-     * @throws IllegalExpresspionException if the expression can not be parsed 
or is not atomic
      */
     public Expression parseExpression(String expression);
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluatorFactory.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluatorFactory.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluatorFactory.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluatorFactory.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluatorFactory.java
  (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/ExpressionEvaluatorFactory.java
  Sun Nov 28 10:15:40 2004
@@ -17,20 +17,15 @@
  */
 package org.apache.beehive.netui.script;
 
-// java imports
 import java.util.HashMap;
 import java.util.Map;
 
-// internal imports
 import org.apache.beehive.netui.util.config.ConfigUtil;
 import 
org.apache.beehive.netui.util.config.bean.NetuiConfigDocument.NetuiConfig;
 import org.apache.beehive.netui.util.config.bean.ExpressionLanguages;
 import 
org.apache.beehive.netui.util.config.bean.ExpressionLanguages.ExpressionLanguage;
-
 import org.apache.beehive.netui.util.logging.Logger;
 
-// external imports
-
 /**
  * Get an expression evaluator.
  */
@@ -38,18 +33,18 @@
 {
     private static final Logger _logger = 
Logger.getInstance(ExpressionEvaluatorFactory.class);
 
-    private static final HashMap _factoryMap = new HashMap();
-    private static ExpressionEngineFactory _defaultFactory;
+    private static final HashMap FACTORY_MAP = new HashMap();
+    private static ExpressionEngineFactory DEFAULT_FACTORY;
 
     static
     {
         try
         {
-            _defaultFactory = initialize(_factoryMap);
+            DEFAULT_FACTORY = initialize(FACTORY_MAP);
         }
         catch(Exception e)
         {
-            _defaultFactory = null;
+            DEFAULT_FACTORY = null;
 
             if(_logger.isErrorEnabled()) 
                 _logger.error("An exception occurred loading the expression 
evaluator configuration.  Cause: " + e, e);
@@ -74,28 +69,21 @@
      */
     public final static ExpressionEvaluator getInstance(String name)
     {
-        assert _defaultFactory != null;
+        assert DEFAULT_FACTORY != null;
+        assert FACTORY_MAP != null;
 
         if(name == null)
-            return _defaultFactory.getInstance();
-        else
-        {
-            assert _factoryMap != null;
-
-            if(_factoryMap.containsKey(name))
-                return 
((ExpressionEngineFactory)_factoryMap.get(name)).getInstance();
-        }
+            return DEFAULT_FACTORY.getInstance();
+        else if(FACTORY_MAP.containsKey(name))
+            return 
((ExpressionEngineFactory)FACTORY_MAP.get(name)).getInstance();
 
         String msg = "An ExpressionEvaluator named \"" + name + "\" is not 
available.";
-        if(_logger.isErrorEnabled()) _logger.error(msg);
+        if(_logger.isErrorEnabled())
+            _logger.error(msg);
 
         throw new IllegalArgumentException(msg);
     }
     
-    /**
-     *
-     *
-     */
     private static final ExpressionEngineFactory initialize(Map factoryMap)
     {
         assert factoryMap != null;
@@ -122,8 +110,8 @@
             }
             catch(ClassNotFoundException cnf)
             {
-                if(_logger.isInfoEnabled()) 
-                    _logger.info("Could not create an ExpressionEngineFactory 
for type \"" + className + 
+                if(_logger.isWarnEnabled())
+                    _logger.warn("Could not create an ExpressionEngineFactory 
for type \"" + className +
                         "\" because the implementation class could not be 
found.");
 
                 continue;
@@ -139,19 +127,20 @@
             }
             
             if(factoryMap.containsKey(name))
-                if(_logger.isWarnEnabled()) _logger.warn("Overwriting a 
previously defined ExpressionEngineFactory named \"" + name + 
-                                                         "\" with a new 
ExpressionEngineFactory of type \"" + className + "\"");
+                if(_logger.isWarnEnabled())
+                    _logger.warn("Overwriting a previously defined 
ExpressionEngineFactory named \"" + name +
+                                 "\" with a new ExpressionEngineFactory of 
type \"" + className + "\"");
                 else _logger.info("Adding an ExpressionEngineFactory named \"" 
+ name + "\" with implementation \"" + className + "\"");
             
             factoryMap.put(name, factory);
         }
 
-        ExpressionEngineFactory def = null;
+        ExpressionEngineFactory defaultEngineFactory = null;
         String defaultLanguage = languages.getDefaultLanguage();
         if(defaultLanguage != null)
         {
-            def = (ExpressionEngineFactory)factoryMap.get(defaultLanguage);
-            if(def != null)
+            defaultEngineFactory = 
(ExpressionEngineFactory)factoryMap.get(defaultLanguage);
+            if(defaultEngineFactory != null)
             {
                 if(_logger.isInfoEnabled()) 
                     _logger.info("Using a default expression evaluator of type 
\"" + factoryMap.get(defaultLanguage).getClass().getName() + "\"");
@@ -161,6 +150,7 @@
                 String msg = 
                     "The default ExpressionEvaluator named \"" + 
defaultLanguage + "\" was specified, but the ExpressionEngineFactory could not 
be found.";
                 if(_logger.isWarnEnabled()) _logger.warn(msg);
+
                 throw new RuntimeException(msg);
             }
         }
@@ -171,6 +161,6 @@
             throw new RuntimeException(msg);
         }
         
-        return def;
+        return defaultEngineFactory;
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleContext.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleContext.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleContext.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleContext.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleContext.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleContext.java
        Sun Nov 28 10:15:40 2004
@@ -17,7 +17,6 @@
  */
 package org.apache.beehive.netui.script.common;
 
-// java imports
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -26,10 +25,8 @@
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
-// internal imports
 import org.apache.beehive.netui.util.logging.Logger;
 
-// external imports
 import org.apache.struts.util.MessageResources;
 
 /**

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/BundleMap.java
    Sun Nov 28 10:15:40 2004
@@ -17,22 +17,18 @@
  */
 package org.apache.beehive.netui.script.common;
 
-// java imports
 import java.util.ArrayList;
 import java.util.Set;
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.Enumeration;
-
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 import javax.servlet.ServletContext;
 
-// internal imports
 import org.apache.beehive.netui.script.common.BundleContext.BundleNode;
 import org.apache.beehive.netui.util.logging.Logger;
 
-// external imports
 import org.apache.struts.Globals;
 import org.apache.struts.config.MessageResourcesConfig;
 import org.apache.struts.config.ModuleConfig;
@@ -51,7 +47,7 @@
 public class BundleMap
     extends AbstractScriptableMap
 {
-    private Logger _logger = Logger.getInstance(BundleMap.class);
+    private static final Logger _logger = Logger.getInstance(BundleMap.class);
 
     private BundleContext _bundleContext = null;
     private HttpServletRequest _request = null;

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
   Sun Nov 28 10:15:40 2004
@@ -17,35 +17,29 @@
  */
 package org.apache.beehive.netui.script.common;
 
-// java imports
 import java.util.LinkedHashMap;
 import java.util.Iterator;
 import java.util.Map;
-
+import java.util.Collections;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
-import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.PageContext;
 import javax.servlet.jsp.JspContext;
+import javax.servlet.jsp.PageContext;
 import javax.servlet.jsp.el.VariableResolver;
-import javax.servlet.jsp.tagext.Tag;
-import javax.servlet.jsp.tagext.JspTag;
 
-// internal imports
 import org.apache.beehive.netui.pageflow.*;
 import org.apache.beehive.netui.pageflow.internal.AnyBeanActionForm;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
-
 import org.apache.beehive.netui.util.config.ConfigUtil;
 import 
org.apache.beehive.netui.util.config.bean.NetuiConfigDocument.NetuiConfig;
 import org.apache.beehive.netui.util.config.bean.ExpressionLanguages;
 import 
org.apache.beehive.netui.util.config.bean.ExpressionLanguages.ExpressionLanguage;
 import org.apache.beehive.netui.util.config.bean.BindingContexts;
 import org.apache.beehive.netui.util.logging.Logger;
+import org.apache.beehive.netui.script.el.NetUIUpdateVariableResolver;
 
-// external imports
 import org.apache.struts.action.ActionForm;
 
 /**
@@ -54,7 +48,7 @@
 public class ImplicitObjectUtil
 {
     private static final Logger _logger = 
Logger.getInstance(ImplicitObjectUtil.class);
-    private static final String IMPLICIT_OBJECT_BEAN = 
(ImplicitObjectBean.class).getName() + "_KEY";
+
     private static final String PAGE_FLOW_IMPLICIT_OBJECT_KEY = "pageFlow";
     private static final String SHARED_FLOW_IMPLICIT_OBJECT_KEY = "sharedFlow";
     private static final String BUNDLE_IMPLICIT_OBJECT_KEY = "bundle";
@@ -82,7 +76,9 @@
         request.setAttribute(PAGE_FLOW_IMPLICIT_OBJECT_KEY, pageFlow);
         if(fbb != null)
             request.setAttribute(BACKING_IMPLICIT_OBJECT_KEY, fbb);
-        request.setAttribute(PAGE_INPUT_IMPLICIT_OBJECT_KEY, 
InternalUtils.getPageInputMap(request));
+
+        Map map = InternalUtils.getPageInputMap(request);
+        request.setAttribute(PAGE_INPUT_IMPLICIT_OBJECT_KEY, map != null ? map 
: Collections.EMPTY_MAP);
     }
 
     public static final void loadSharedFlow(ServletRequest request, 
SharedFlowController sharedFlow)
@@ -96,37 +92,14 @@
         servletRequest.setAttribute(BUNDLE_IMPLICIT_OBJECT_KEY, bundleMap);
     }
 
-    public static final ImplicitObjectBean getImplicitObjects(PageContext 
pageContext, JspTag currentTag)
+    public static final Object unwrapForm(Object form)
     {
-        ServletRequest request = pageContext.getRequest();
-        ImplicitObjectBean bean = 
(ImplicitObjectBean)request.getAttribute(IMPLICIT_OBJECT_BEAN);
-
-        if(bean == null)
-        {
-            bean = new ImplicitObjectBean();
-            request.setAttribute(IMPLICIT_OBJECT_BEAN, bean);
-        }
-
-        bean.setPageContext(pageContext);
-
-        // @todo: need to be able to clean-up the ActionForm.  right now, this 
update is done for all 
-        // calls to this method so that the action form is always 'up to date' 
in the ImplicitObjectBean
-        // for every call.  It might be possible to move this into the form 
tag to add / remove as needed.
-        ActionForm actionForm = 
((ActionForm)request.getAttribute(org.apache.struts.taglib.html.Constants.BEAN_KEY));
-        bean.setActionForm(unwrapForm(actionForm));
-        bean.setCurrentTag(currentTag);
-
-        return bean;
-    }
+        if(_logger.isDebugEnabled() && form instanceof AnyBeanActionForm)
+            _logger.debug("using form of type: " + ((AnyBeanActionForm)form != 
null ? ((AnyBeanActionForm)form).getClass().getName() : "null"));
 
-    public static final ImplicitObjectBean getImplicitObjects(ServletRequest 
request, ServletResponse response, ActionForm actionForm)
-    {
-        ImplicitObjectBean bean = new ImplicitObjectBean();
-        bean.setServletRequest(request);
-        bean.setServletResponse(response);
-        bean.setActionForm(unwrapForm(actionForm));
-        
-        return bean;
+        if(form instanceof AnyBeanActionForm)
+            return ((AnyBeanActionForm)form).getBean();
+        else return form;
     }
 
     public static final SharedFlowController getSharedFlow(ServletRequest 
request, ServletResponse response)
@@ -167,7 +140,7 @@
 
     public static final GlobalApp getGlobalApp(ServletRequest request, 
ServletResponse response)
     {
-       assert request instanceof HttpServletRequest;
+        assert request instanceof HttpServletRequest;
 
         GlobalApp ga = PageFlowUtils.getGlobalApp((HttpServletRequest)request);
         
@@ -205,6 +178,28 @@
     }
 
     /**
+     *
+     */
+    public static final VariableResolver 
getUpdateVariableResolver(ServletRequest request, ServletResponse response, 
boolean isHandlingPost) {
+        Object form = 
ImplicitObjectUtil.unwrapForm(request.getAttribute(org.apache.struts.taglib.html.Constants.BEAN_KEY));
+
+        /* todo: need to provide get(Read|Update)VariableResolver methods on 
the ExpressionEngineFactory */
+        return new NetUIUpdateVariableResolver(form, request, response, 
isHandlingPost);
+    }
+
+    public static final VariableResolver getUpdateVariableResolver(Object 
form, ServletRequest request, ServletResponse response, boolean isHandlingPost) 
{
+        Object realForm = ImplicitObjectUtil.unwrapForm(form);
+
+        /* todo: need to provide get(Read|Update)VariableResolver methods on 
the ExpressionEngineFactory */
+        return new NetUIUpdateVariableResolver(realForm, request, response, 
isHandlingPost);
+    }
+
+    public static final VariableResolver getReadVariableResolver(PageContext 
pageContext) {
+        assert pageContext != null;
+        return pageContext.getVariableResolver();
+    }
+
+    /**
      * Read entires from the netui-config.xml file and add the objects
      * to this implicit object map.
      */
@@ -294,15 +289,5 @@
         }
         
         return map;
-    }
-
-    private static final Object unwrapForm(Object form)
-    {
-        if(_logger.isDebugEnabled() && form instanceof AnyBeanActionForm)
-            _logger.debug("using form of type: " + ((AnyBeanActionForm)form != 
null ? ((AnyBeanActionForm)form).getClass().getName() : "null"));
-
-        if(form instanceof AnyBeanActionForm)
-            return ((AnyBeanActionForm)form).getBean();
-        else return form;
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java
  (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionEvaluatorImpl.java
  Sun Nov 28 10:15:40 2004
@@ -17,30 +17,24 @@
  */
 package org.apache.beehive.netui.script.el;
 
-// java imports
-
-// internal imports
-import org.apache.beehive.netui.script.el.util.ParseUtils;
+import javax.servlet.jsp.el.VariableResolver;
 
 import org.apache.beehive.netui.script.Expression;
 import org.apache.beehive.netui.script.ExpressionEvaluator;
 import org.apache.beehive.netui.script.ExpressionEvaluationException;
 import org.apache.beehive.netui.script.ExpressionUpdateException;
 import org.apache.beehive.netui.script.IllegalExpressionException;
-import org.apache.beehive.netui.script.common.ImplicitObjectBean;
-
+import org.apache.beehive.netui.script.el.util.ParseUtils;
 import org.apache.beehive.netui.util.logging.Logger;
 
-// external imports
-
 /**
  *
  */
 public class ExpressionEvaluatorImpl
     implements ExpressionEvaluator
 {
-    private static Logger _logger = 
Logger.getInstance(ExpressionEvaluatorImpl.class);
-    private static final boolean debugEnabled = _logger.isDebugEnabled();
+    private static final Logger _logger = 
Logger.getInstance(ExpressionEvaluatorImpl.class);
+    private static final boolean DEBUG_ENABLED = _logger.isDebugEnabled();
 
     public static class NetUIELEngineFactory
         extends org.apache.beehive.netui.script.ExpressionEngineFactory
@@ -51,25 +45,21 @@
         }
     }
 
-    public Object evaluateStrict(String expression, ImplicitObjectBean bean)
+    public Object evaluateStrict(String expression, VariableResolver 
variableResolver)
         throws ExpressionEvaluationException
     {
-        NetUIVariableResolver vr = null;
+        NetUIReadVariableResolver vr = null;
         try
         {
-            // @TODO: need to cache VariableResolvers for a request -- need a 
request ExpressionEvaluationContext
-            vr = new NetUIReadVariableResolver(bean.getActionForm(),
-                                               bean.getCurrentTag(),
-                                               bean.getPageContext());
-            
+            /* todo: is there compelling enough reson to keep this code here? 
*/
+            vr = new NetUIReadVariableResolver(variableResolver);
+
             return ParseUtils.evaluate(expression, vr);
         }
         catch(Exception e)
         {
-            if(debugEnabled)
-            {
+            if(DEBUG_ENABLED)
                 _logger.debug("Expression evaluation failed in NetUIEL.  
Cause: " + e, e);
-            }
 
             Exception act = e;
 
@@ -77,40 +67,38 @@
             String msg = "Caught exception when evaluating expression \"" + 
expression + "\" with available binding contexts " + 
                 contextStr + ". Root cause: " + 
ParseUtils.getRootCause(act).toString();
 
-            if(_logger.isErrorEnabled()) _logger.error(msg, act);
+            if(_logger.isErrorEnabled())
+                _logger.error(msg, act);
         
-            ExpressionEvaluationException eee = new 
ExpressionEvaluationException(msg, expression, act);
-
-            throw eee;
+            throw new ExpressionEvaluationException(msg, expression, act);
         }
     }
 
-    // TODO: need to cache VariableResolvers for a request -- need a request 
ExpressionEvaluationContext
-    public void update(String expression, Object value, ImplicitObjectBean 
bean, boolean requestParameter)
+    public void update(String expression, Object value, VariableResolver 
variableResolver, boolean requestParameter)
         throws ExpressionUpdateException
     {
-        NetUIVariableResolver vr = null;
+        assert variableResolver instanceof NetUIVariableResolver;
+
+        NetUIVariableResolver vr = (NetUIVariableResolver)variableResolver;
+
         try
         {
-            if(debugEnabled) _logger.debug("Update expression \"" + expression 
+ "\"");
-            
-            vr = new NetUIUpdateVariableResolver(bean.getActionForm(),
-                                                 bean.getServletRequest(),
-                                                 bean.getServletResponse(), 
-                                                 requestParameter);
-            
+            if(DEBUG_ENABLED)
+                _logger.debug("Update expression \"" + expression + "\"");
+
             ParseUtils.update(expression, value, vr);
         }
         catch(Exception e)
         {
-            if(debugEnabled)
+            if(DEBUG_ENABLED)
                 _logger.debug("Expression update failed in NetUIEL.  Cause: " 
+ e, e);
 
             String contextStr = 
ParseUtils.getContextString(vr.getAvailableVariables());
             String msg = "Exception when attempting to update the expression 
\"" + expression + "\" with available binding contexts " + 
                 contextStr + ". Root cause: " + 
ParseUtils.getRootCause(e).toString();
             
-            if(_logger.isErrorEnabled()) _logger.error(msg, e);
+            if(_logger.isErrorEnabled())
+                _logger.error(msg, e);
 
             ExpressionUpdateException eee = new ExpressionUpdateException(msg, 
expression, e);
             eee.setLocalizedMessage(msg);
@@ -119,7 +107,7 @@
         }
     }
 
-    // TODO: fix the lookup index to be Object
+    /* todo: fix the lookup index to be Object */
     public String changeContext(String expression, String oldContext, String 
newContext, int lookupIndex)
         throws ExpressionEvaluationException
     {
@@ -183,12 +171,14 @@
         try
         {
             ParsedExpression pe = ParseUtils.parse(expression);
-
+            assert pe != null;
             return pe.containsExpression();
         }
         catch(Exception e)
         {
-            if(_logger.isErrorEnabled()) _logger.error("Exception checking for 
expressions in \"" + expression + "\"", e);
+            if(_logger.isErrorEnabled())
+                _logger.error("Exception checking for expressions in \"" + 
expression + "\"", e);
+
             return false;
         }
     }
@@ -198,7 +188,7 @@
         if(isExpression(expression))
         {
             ParsedExpression pe = ParseUtils.parse(expression);
-            
+            assert pe != null;
             return pe.getAtomicExpressionTerm();
         }
         else throw new IllegalExpressionException("The expression \"" + 
expression + "\" can not be parsed as it is not an atomic expression.");

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionParseException.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionParseException.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionParseException.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionParseException.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionParseException.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionParseException.java
 Sun Nov 28 10:15:40 2004
@@ -17,12 +17,6 @@
  */
 package org.apache.beehive.netui.script.el;
 
-// java imports
-
-// internal imports
-
-// external imports
-
 /**
  *
  */

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionTerm.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionTerm.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionTerm.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionTerm.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionTerm.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ExpressionTerm.java
   Sun Nov 28 10:15:40 2004
@@ -17,16 +17,12 @@
  */
 package org.apache.beehive.netui.script.el;
 
-// java imports
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
-// internal imports
 import org.apache.beehive.netui.script.Expression;
-
-import org.apache.beehive.netui.script.el.NetUIVariableResolver;
 import org.apache.beehive.netui.script.el.tokens.ArrayIndexToken;
 import org.apache.beehive.netui.script.el.tokens.ContextToken;
 import org.apache.beehive.netui.script.el.tokens.ExpressionToken;
@@ -34,10 +30,7 @@
 import org.apache.beehive.netui.script.el.tokens.MapKeyToken;
 import org.apache.beehive.netui.script.el.util.BindingContext;
 import org.apache.beehive.netui.script.el.util.ParseUtils;
-
 import org.apache.beehive.netui.util.logging.Logger;
-
-// external imports
 
 /**
  *

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/LiteralTerm.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/LiteralTerm.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/LiteralTerm.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/LiteralTerm.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/LiteralTerm.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/LiteralTerm.java
      Sun Nov 28 10:15:40 2004
@@ -17,12 +17,7 @@
  */
 package org.apache.beehive.netui.script.el;
 
-// java imports
-
-// internal imports
 import org.apache.beehive.netui.util.logging.Logger;
-
-// external imports
 
 /**
  *

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIReadVariableResolver.java
        Sun Nov 28 10:15:40 2004
@@ -4,9 +4,9 @@
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *     http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,112 +17,42 @@
  */
 package org.apache.beehive.netui.script.el;
 
-// java imports
-import java.util.Map;
-
-import javax.servlet.jsp.PageContext;
-import javax.servlet.jsp.tagext.Tag;
-import javax.servlet.jsp.tagext.JspTag;
 import javax.servlet.jsp.el.VariableResolver;
 
-// internal imports
 import org.apache.beehive.netui.script.IllegalExpressionException;
-
-import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
-import org.apache.beehive.netui.script.common.ScriptablePageInput;
-
-import org.apache.beehive.netui.script.el.util.ApplicationAttributeMap;
-import org.apache.beehive.netui.script.el.util.PageContextAttributeMap;
-import org.apache.beehive.netui.script.el.util.RequestAttributeMap;
-import org.apache.beehive.netui.script.el.util.RequestParameterMap;
-import org.apache.beehive.netui.script.el.util.SessionAttributeMap;
-
 import org.apache.beehive.netui.util.logging.Logger;
 
-// external imports
-
 /**
  *
  */
 public class NetUIReadVariableResolver
-    extends NetUIVariableResolver
-{
+    extends NetUIVariableResolver {
+
     private static final Logger _logger = 
Logger.getInstance(NetUIReadVariableResolver.class);
-    private static final Map _contextFactories;
 
-    static
-    {
-        _contextFactories = ImplicitObjectUtil.initialize("netuiel");
-    }
+    private VariableResolver _vr = null;
 
-    private PageContext _pc = null;
-    private JspTag _currentTag = null;
-    private Object _form = null;
-
-    public NetUIReadVariableResolver(Object form, JspTag currentTag, 
PageContext pc)
-    {
-        _pc = pc;
-        _form = form;
-        _currentTag = currentTag;
+    public NetUIReadVariableResolver(VariableResolver vr) {
+        assert vr != null;
+        _vr = vr;
     }
 
-    public Object resolveVariable(String name)
-    {
-        // use JSP 2.0 EL Implicit Object names
-        if(name.equals("pageScope"))
-            return new PageContextAttributeMap(_pc);
-        else if(name.equals("requestScope"))
-            return new RequestAttributeMap(_pc.getRequest());
-        else if(name.equals("sessionScope"))
-            return new SessionAttributeMap(_pc.getSession());
-        else if(name.equals("applicationScope"))
-            return new ApplicationAttributeMap(_pc.getServletContext());
-        else if(name.equals("param"))
-            return new RequestParameterMap(_pc.getRequest());
-        // NetUI Implicit Objects
-        else if(name.equals("actionForm"))
-            return _form;
-        else if(name.equals("pageFlow"))
-            return getPageFlow(_pc.getRequest(), _pc.getResponse());
-        else if(name.equals("globalApp"))
-            return getGlobalApp(_pc.getRequest(), _pc.getResponse());
-        else if(name.equals("sharedFlow"))
-            return getSharedFlow(_pc.getRequest(), _pc.getResponse());
-        else if(name.equals("bundle"))
-            return getScriptableObject(_contextFactories, this, name);
-        else if(name.equals("container"))
-            return getScriptableObject(_contextFactories, this, name);
-        else if(name.equals("pageInput"))
-            return new ScriptablePageInput(_pc.getRequest());
-        // in order to look-up ContextFactories that are used to create 
ScriptableObjects,
-        // need to call the contextFactory map to find those that aren't known 
about
-        // explicitly here.  The statements above are used to look-up binding 
contexts
-        // that are well-known because it's faster than dropping into the
-        // ContextFactory map for each lookup -- optimizing for the common 
case.
-        else if(_contextFactories != null && 
_contextFactories.containsKey(name))
-        {
-            return getScriptableObject(_contextFactories, this, name);
-        }
-        else
-        {
+    public Object resolveVariable(String name) {
+
+        try {
+            return _vr.resolveVariable(name);
+        } catch (javax.servlet.jsp.el.ELException ele) {
             RuntimeException re = new RuntimeException("Could not resolve 
variable named \"" + name + "\"", new IllegalExpressionException());
-            if(_logger.isErrorEnabled()) _logger.error("", re);
-            throw re;
-        }
-    }
 
-    public String[] getAvailableVariables()
-    {
-        return new String[] {"actionForm", "pageFlow", "globalApp", "request", 
"session", "application", "pageContext", "bundle", "container", "url", 
"pageInput"};
-    }
+            if (_logger.isErrorEnabled())
+                _logger.error("", re);
 
-    public JspTag getCurrentTag()
-    {
-        return _currentTag;
+            throw re;
+        }
     }
 
-    private static final Object getScriptableObject(Map contextFactories, 
VariableResolver vr, String name)
-    {
-        return ImplicitObjectUtil.getImplicitObject(contextFactories, vr, 
name);
+    public String[] getAvailableVariables() {
+        /* todo: implement this correctly! */
+        return new String[]{"actionForm", "pageFlow", "globalApp", "request", 
"session", "application", "pageContext", "bundle", "container", "url", 
"pageInput"};
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java
      Sun Nov 28 10:15:40 2004
@@ -20,24 +20,30 @@
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.jsp.el.VariableResolver;
 
 import org.apache.beehive.netui.script.IllegalExpressionException;
+import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
 import org.apache.beehive.netui.script.el.util.RequestAttributeMap;
 import org.apache.beehive.netui.script.el.util.SessionAttributeMap;
 import org.apache.beehive.netui.util.logging.Logger;
+import org.apache.beehive.netui.pageflow.SharedFlowController;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.GlobalApp;
 
 /**
  *
  */
 public class NetUIUpdateVariableResolver
     extends NetUIVariableResolver
+    implements VariableResolver
 {
     private static final Logger _logger = 
Logger.getInstance(NetUIVariableResolver.class);
 
+    private boolean _requestParameter = true;
+    private Object _form = null;
     private ServletRequest _request = null;
     private ServletResponse _response = null;
-    private Object _form = null;
-    private boolean _requestParameter = true;
 
     public NetUIUpdateVariableResolver(Object form, ServletRequest request, 
ServletResponse response, boolean requestParameter)
     {
@@ -68,7 +74,7 @@
         else if(name.equals("sessionScope"))
         {
             if(_requestParameter == false)
-                return new 
SessionAttributeMap(((HttpServletRequest)_request).getSession());
+                   return new 
SessionAttributeMap(((HttpServletRequest)_request).getSession());
             else throw new IllegalExpressionException("The session data 
binding context can not be updated from a request parameter.");
         }
         // @bug: need to get the ServletContext from somewhere
@@ -81,7 +87,9 @@
         else 
         {
             String msg = "Could not resolve variable named \"" + name + "\" 
for an expression update.";
-            _logger.error(msg);
+            if(_logger.isErrorEnabled())
+                _logger.error(msg);
+
             throw new IllegalExpressionException(msg);
         }
     }
@@ -91,5 +99,20 @@
         if(_requestParameter)
             return new String[] {"actionForm", "pageFlow", "globalApp"};
         else return new String[] {"actionForm", "pageFlow", "globalApp", 
"request", "session", "application"};
+    }
+
+    private static final SharedFlowController getSharedFlow(ServletRequest 
request, ServletResponse response)
+    {
+           return ImplicitObjectUtil.getSharedFlow(request, response);
+    }
+
+    private static final PageFlowController getPageFlow(ServletRequest 
request, ServletResponse response)
+    {
+        return ImplicitObjectUtil.getPageFlow(request, response);
+    }
+
+    private static final GlobalApp getGlobalApp(ServletRequest request, 
ServletResponse response)
+    {
+        return ImplicitObjectUtil.getGlobalApp(request, response);
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIVariableResolver.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIVariableResolver.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIVariableResolver.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIVariableResolver.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIVariableResolver.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIVariableResolver.java
    Sun Nov 28 10:15:40 2004
@@ -17,22 +17,14 @@
  */
 package org.apache.beehive.netui.script.el;
 
-// java imports
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
-
 import javax.servlet.jsp.el.VariableResolver;
 
-// internal imports
-import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
-
 import org.apache.beehive.netui.pageflow.GlobalApp;
 import org.apache.beehive.netui.pageflow.PageFlowController;
 import org.apache.beehive.netui.pageflow.SharedFlowController;
-
-import org.apache.beehive.netui.util.logging.Logger;
-
-// external imports
+import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
 
 /**
  *
@@ -40,27 +32,7 @@
 public abstract class NetUIVariableResolver
     implements VariableResolver
 {
-    private static final Logger _logger = 
Logger.getInstance(NetUIVariableResolver.class);
-    
-    public Object resolveVariable(String name)
-    {
-        return null;
-    }
+    public abstract Object resolveVariable(String name);
 
     public abstract String[] getAvailableVariables();
-
-    protected SharedFlowController getSharedFlow(ServletRequest request, 
ServletResponse response)
-    {
-           return ImplicitObjectUtil.getSharedFlow(request, response);
-    }
-
-    protected PageFlowController getPageFlow(ServletRequest request, 
ServletResponse response)
-    {
-        return ImplicitObjectUtil.getPageFlow(request, response);
-    }
-
-    protected GlobalApp getGlobalApp(ServletRequest request, ServletResponse 
response)
-    {
-        return ImplicitObjectUtil.getGlobalApp(request, response);
-    }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ParsedExpression.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ParsedExpression.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ParsedExpression.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ParsedExpression.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ParsedExpression.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/ParsedExpression.java
 Sun Nov 28 10:15:40 2004
@@ -17,15 +17,10 @@
  */
 package org.apache.beehive.netui.script.el;
 
-// java imports
 import java.util.ArrayList;
-import java.util.List;
 
-// internal imports
 import org.apache.beehive.netui.util.logging.Logger;
 
-// external imports
-
 /**
  *
  */
@@ -33,12 +28,11 @@
 {
     private static Logger _logger = Logger.getInstance(ParsedExpression.class);
 
-    // this needs to be fast
-    private static final boolean debugEnabled = _logger.isDebugEnabled();
-
+    /* cache the debug status; this needs to be _fast_ */
+    private static final boolean DEBUG_ENABLED = _logger.isDebugEnabled();
     private static final String EMPTY_STRING = "";
 
-    private List terms = new ArrayList();
+    private ArrayList<Term> terms = new ArrayList<Term>(3);
     private boolean isExpression = false;
     private boolean containsExpression = false;
 
@@ -100,7 +94,9 @@
 
     public Term getTerm(int i)
     {
-        // @TODO: error checking
+        assert termArray != null;
+        assert i > 0 && i < termArray.length;
+
         return termArray[i];
     }
 
@@ -111,11 +107,13 @@
 
     public Object evaluate(NetUIVariableResolver vr)
     {
-        if(debugEnabled) _logger.debug("evaluate expression: " + exprStr);
+        if(DEBUG_ENABLED)
+            _logger.debug("evaluate expression: " + exprStr);
 
         if(isExpression)
         {
-            if(debugEnabled) _logger.debug("atoimc expression");
+            if(DEBUG_ENABLED)
+                _logger.debug("atoimc expression");
 
             return atomicExpression.evaluate(vr);
         }
@@ -125,8 +123,9 @@
             
             for(int i = 0; i < terms.size(); i++)
             {
-                if(debugEnabled) _logger.debug("term[" + i + "]: " + 
termArray[i].getClass().getName() + 
-                                               " expression string: " + 
termArray[i].getExpressionString());
+                if(DEBUG_ENABLED)
+                    _logger.debug("term[" + i + "]: " + 
termArray[i].getClass().getName() +
+                                  " expression string: " + 
termArray[i].getExpressionString());
 
                 Object result = termArray[i].evaluate(vr);
 
@@ -142,7 +141,8 @@
         if(!isExpression)
         {
             String msg = "The expression can not be updated because it is not 
atomic.";
-            if(_logger.isErrorEnabled()) _logger.error(msg);
+            if(_logger.isErrorEnabled())
+                _logger.error(msg);
             throw new RuntimeException(msg);
         }
 
@@ -155,7 +155,8 @@
         {
             String msg = "The expression can not change context because it is 
not atomic.";
             
-            if(_logger.isErrorEnabled()) _logger.error(msg);
+            if(_logger.isErrorEnabled())
+                _logger.error(msg);
 
             throw new RuntimeException(msg);
         }
@@ -165,7 +166,7 @@
 
     public String qualify(String contextName)
     {
-        // @TODO: could check to see if first term is literal
+        /* todo: could check to see if first term is literal */
 
         return "{" + contextName + "." + getExpressionString() + "}";
     }
@@ -180,11 +181,9 @@
 
     public String toString()
     {
-        StringBuffer buf = new StringBuffer();
-        for(int i = 0; i < terms.size(); i++)
-        {
-            buf.append(terms.get(i).toString());
-        }
-        return buf.toString();
+        StringBuilder builder = new StringBuilder();
+        for(Term term : terms)
+            builder.append(term.toString());
+        return builder.toString();
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/Term.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/Term.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/Term.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/Term.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/Term.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/Term.java
     Sun Nov 28 10:15:40 2004
@@ -17,12 +17,9 @@
  */
 package org.apache.beehive.netui.script.el;
 
-// java imports
-
-// internal imports
-
-// externaml imprts
-
+/**
+ *
+ */
 public interface Term
 {
     public Object evaluate(NetUIVariableResolver vr);

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/tokens/ExpressionToken.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/tokens/ExpressionToken.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/tokens/ExpressionToken.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/tokens/ExpressionToken.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/tokens/ExpressionToken.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/tokens/ExpressionToken.java
   Sun Nov 28 10:15:40 2004
@@ -17,21 +17,15 @@
  */
 package org.apache.beehive.netui.script.el.tokens;
 
-// java imports
 import java.lang.reflect.Array;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-
 import java.util.List;
 import java.util.Map;
 
-// internal imports
 import org.apache.beehive.netui.util.cache.PropertyCache;
 import org.apache.beehive.netui.util.logging.Logger;
-
 import org.apache.beehive.netui.script.el.util.ParseUtils;
-
-// external imports
 
 /**
  *

Deleted: 
/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ApplicationAttributeMap.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ApplicationAttributeMap.java?view=auto&rev=106822
==============================================================================

Deleted: 
/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/PageContextAttributeMap.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/PageContextAttributeMap.java?view=auto&rev=106822
==============================================================================

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java
  (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java
  Sun Nov 28 10:15:40 2004
@@ -17,37 +17,22 @@
  */
 package org.apache.beehive.netui.script.el.util;
 
-// java imports
-import java.io.PrintWriter;
-import java.io.Reader;
 import java.io.StringReader;
-import java.io.StringWriter;
-
 import java.lang.reflect.Array;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
-
 import java.util.HashMap;
-import java.util.Map;
 
-// internal imports
 import org.apache.beehive.netui.script.el.parser.NetUIELParser;
-import org.apache.beehive.netui.script.el.ExpressionTerm;
 import org.apache.beehive.netui.script.el.NetUIVariableResolver;
 import org.apache.beehive.netui.script.el.ParsedExpression;
 import org.apache.beehive.netui.script.el.ExpressionParseException;
-
 import org.apache.beehive.netui.script.el.parser.TokenMgrError;
 import org.apache.beehive.netui.script.el.parser.ParseException;
-
 import org.apache.beehive.netui.util.cache.PropertyCache;
-
 import org.apache.beehive.netui.util.type.TypeUtils;
-
 import org.apache.beehive.netui.util.logging.Logger;
 
-// external imports
-
 /**
  *
  */
@@ -55,29 +40,30 @@
 {
     private static final Logger _logger = Logger.getInstance(ParseUtils.class);
 
-    private static final Map parsedCache = new HashMap();
+    private static final HashMap<String, ParsedExpression> PARSED_CACHE =
+            new HashMap<String, ParsedExpression>();
 
+    /* do not construct */
     private ParseUtils() {}
 
-    public static ParsedExpression parse(String exprStr)
+    public static final ParsedExpression parse(String exprStr)
     {
-        Object obj = parsedCache.get(exprStr);
+        ParsedExpression pe = PARSED_CACHE.get(exprStr);
 
-        if(obj != null)
-            return (ParsedExpression)obj;
+        if(pe != null)
+            return pe;
 
         try
         {
-            Reader reader = new StringReader(exprStr);
-            NetUIELParser learn = new NetUIELParser(reader);
-            
+            NetUIELParser learn = new NetUIELParser(new StringReader(exprStr));
+
             ParsedExpression expr = learn.parse();
             expr.seal();
 
-            // infrequent
-            synchronized(parsedCache)
+            /* infrequent; this should only happen when there is a cache miss 
*/
+            synchronized(PARSED_CACHE)
             {
-                parsedCache.put(exprStr, expr);
+                PARSED_CACHE.put(exprStr, expr);
             }
 
             return expr;
@@ -85,35 +71,38 @@
         catch(ParseException e)
         {
             String msg = "Error occurred parsing expression \"" + exprStr + 
"\".";
-            if(_logger.isErrorEnabled()) _logger.error(msg, e);
-
+            if(_logger.isErrorEnabled())
+                _logger.error(msg, e);
             throw new ExpressionParseException(msg, e);
         }
         catch(TokenMgrError tm)
         {
             String msg = "Error occurred parsing expression \"" + exprStr + 
"\".";
-            if(_logger.isErrorEnabled()) _logger.error(msg, tm);
-
+            if(_logger.isErrorEnabled())
+                _logger.error(msg, tm);
             throw new ExpressionParseException(msg, tm);
         }
     }
 
-    public static Object evaluate(String exprStr, NetUIVariableResolver vr)
+    public static final Object evaluate(String exprStr, NetUIVariableResolver 
vr)
     {
         ParsedExpression expr = parse(exprStr);
-
+        assert expr != null;
         return expr.evaluate(vr);
     }
 
-    public static void update(String exprStr, Object value, 
NetUIVariableResolver vr)
+    public static final void update(String exprStr, Object value, 
NetUIVariableResolver vr)
     {
         ParsedExpression expr = parse(exprStr);
-
+        assert expr != null;
         expr.update(value, vr);
     }
 
-    public static Class getPropertyType(Object value, String name, 
PropertyCache cache)
+    public static final Class getPropertyType(Object value, String name, 
PropertyCache cache)
     {
+        assert value != null;
+        assert cache != null;
+
         Class type = value.getClass();
         Field f = cache.getField(type, name);
         if(f != null)
@@ -124,15 +113,23 @@
         {
             String msg = "Can not find setter method for property \"" + name + 
"\" on object of type \"" + value.getClass() + "\".";
             
-            if(_logger.isErrorEnabled()) _logger.error(msg);
+            if(_logger.isErrorEnabled())
+                _logger.error(msg);
             throw new RuntimeException(msg);
         }
         // PropertyCache guarantees that props are found and match JavaBean 
naming rules
-        else return m.getParameterTypes()[0];
+        else
+        {
+            assert m.getParameterTypes().length == 1;    
+            return m.getParameterTypes()[0];
+        }
     }
 
-    public static Object getProperty(Object value, String name, PropertyCache 
cache)
+    public static final Object getProperty(Object value, String name, 
PropertyCache cache)
     {
+        assert value != null;
+        assert cache != null;
+
         Class type = value.getClass();
         
         Field f = cache.getField(type, name);
@@ -145,7 +142,8 @@
             catch(Exception e)
             {
                 String msg = "An error occurred evaluating the field \"" + 
name + "\" on an object of type \"" + type + "\".";
-                if(_logger.isDebugEnabled()) _logger.debug(msg, e);
+                if(_logger.isDebugEnabled())
+                    _logger.debug(msg, e);
                 throw new RuntimeException(msg, e);
             }
         }
@@ -166,21 +164,24 @@
         }
         
         String msg = "Could not find property or field \"" + name + "\" on 
object of type \"" + type + "\"";
-        if(_logger.isDebugEnabled()) _logger.debug(msg);
+        if(_logger.isDebugEnabled())
+            _logger.debug(msg);
         throw new RuntimeException(msg);
     }
 
-    public static Object convertType(Object value, Class toType)
+    public static final Object convertType(Object value, Class toType)
     {
+        assert toType != null;
+
         try
         {
             boolean sourceIsArray = false;
 
-            // only convert String types; other Object types are already 
assumed to be in their target types.
+            /* only convert String types; other Object types are already 
assumed to be in their target types. */
             if(value != null && !(value instanceof String || (sourceIsArray = 
(value instanceof String[])) ))
                 return value;
 
-            // for a String[], convert each item in the array into its target 
type and return the resulting array.
+            /* for a String[], convert each item in the array into its target 
type and return the resulting array. */
             if(toType.isArray())
             {
                 if(value == null)
@@ -206,7 +207,8 @@
                         catch(IllegalArgumentException e)
                         {
                             String msg = "Can not set Object types via 
expressions that are not supported by the set of registered type converters.  
Cause: " + e;
-                            if(_logger.isErrorEnabled()) _logger.error(msg, e);
+                            if(_logger.isErrorEnabled())
+                                _logger.error(msg, e);
                             throw new RuntimeException(msg, e);
                         }
 
@@ -219,7 +221,8 @@
             // convert the String into its target type and return the result
             else
             {
-                if(_logger.isDebugEnabled()) _logger.debug("convert value \"" 
+ value + "\" to type: " + toType);
+                if(_logger.isDebugEnabled())
+                    _logger.debug("convert value \"" + value + "\" to type: " 
+ toType);
 
                 // If the "value" is multi-valued (String[]), it needs to be 
converted into a single-valued object. 
                 // There is no policy defined for how we do this right now, so 
the first one will always win when 
@@ -242,7 +245,8 @@
                 catch(IllegalArgumentException e)
                 {
                     String msg = "The type \"" + toType.getName() + "\" can 
not be set through XScript with the update value \"" + value + "\"";
-                    if(_logger.isErrorEnabled()) _logger.error(msg, e);
+                    if(_logger.isErrorEnabled())
+                        _logger.error(msg, e);
                     throw new RuntimeException(msg, e);
                 }
             }
@@ -250,36 +254,26 @@
         catch(Exception e)
         {
             String msg = "Unable to convert a value of type \"" + 
value.getClass() + "\" to the array element type of \"" + toType + "\".  Cause: 
" + e;
-            if(_logger.isErrorEnabled()) _logger.error(msg, e);
+            if(_logger.isErrorEnabled())
+                _logger.error(msg, e);
             throw new RuntimeException(msg, e);
         }
     }
 
-    public static void printStack(String message, Throwable t)
-    {
-        StringWriter sw = new StringWriter();
-        PrintWriter pw = new PrintWriter(sw);
-        t.printStackTrace(pw);
-        pw.flush();
-        pw.close();
-        if(_logger.isDebugEnabled()) _logger.debug(message, t);
-        else System.err.println(message + "Cause: " + sw.toString());
-    }
-
     public static String getContextString(String[] contexts)
     {
-        StringBuffer buf = new StringBuffer();
-        buf.append("[");
+        StringBuilder builder = new StringBuilder();
+        builder.append("[");
         if(contexts != null)
         {
             for(int i = 0; i < contexts.length; i++)
             {
-                if(i > 0) buf.append(", ");
-                buf.append(contexts[i]);
+                if(i > 0) builder.append(", ");
+                builder.append(contexts[i]);
             }
         }
-        buf.append("]");
-        return buf.toString();
+        builder.append("]");
+        return builder.toString();
     }
 
     public static Throwable getRootCause(Throwable t)
@@ -287,7 +281,6 @@
         Throwable root = t;
         while(root.getCause() != null)
             root = root.getCause();
-
         return root;
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMap.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMap.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMap.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMap.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMap.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMap.java
 Sun Nov 28 10:15:40 2004
@@ -17,13 +17,8 @@
  */
 package org.apache.beehive.netui.script.el.util;
 
-// java imports
 import java.util.Enumeration;
 import javax.servlet.ServletRequest;
-
-// internal imports
-
-// external imports
 
 /**
  *

Deleted: 
/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestParameterMap.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestParameterMap.java?view=auto&rev=106822
==============================================================================

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMap.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMap.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMap.java&r1=106822&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMap.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMap.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMap.java
 Sun Nov 28 10:15:40 2004
@@ -17,13 +17,8 @@
  */
 package org.apache.beehive.netui.script.el.util;
 
-// java imports
 import java.util.Enumeration;
 import javax.servlet.http.HttpSession;
-
-// internal imports
-
-// external imports
 
 /**
  *

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java&r1=106822&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/DataGridModel.java
   Sun Nov 28 10:15:40 2004
@@ -17,10 +17,7 @@
  */
 package org.apache.beehive.netui.databinding.datagrid.model;
 
-import java.util.*;
 import javax.servlet.jsp.JspContext;
-import javax.servlet.jsp.PageContext;
-import javax.servlet.http.HttpServletRequest;
 
 import org.apache.beehive.netui.databinding.datagrid.rendering.TableRenderer;
 import org.apache.beehive.netui.databinding.datagrid.services.FilterService;
@@ -29,9 +26,6 @@
 import org.apache.beehive.netui.databinding.datagrid.util.PagedDataSet;
 import org.apache.beehive.netui.databinding.datagrid.rendering.IPagerRenderer;
 import 
org.apache.beehive.netui.databinding.datagrid.rendering.impl.PreviousNextPagerRenderer;
-import org.apache.beehive.netui.util.logging.Logger;
-import org.apache.beehive.netui.tags.rendering.TableTag;
-import org.apache.beehive.netui.tags.rendering.TrTag;
 import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender;
 
 /**

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java&r1=106822&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/AbstractClassicTag.java
   Sun Nov 28 10:15:40 2004
@@ -120,11 +120,6 @@
     {
         ee = null;
        _eh = null;
-
-        // null the current tag
-        //ImplicitObjectBean bean = 
ImplicitObjectUtil.getImplicitObjects(pageContext, this);
-        //bean.setCurrentTag(null);
-        ImplicitObjectUtil.getImplicitObjects(pageContext, null);
     }
 
     /**

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java&r1=106822&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/ExpressionHandling.java
   Sun Nov 28 10:15:40 2004
@@ -1,16 +1,36 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
 package org.apache.beehive.netui.tags;
 
 import org.apache.beehive.netui.script.ExpressionEvaluationException;
 import org.apache.beehive.netui.script.ExpressionEvaluator;
 import org.apache.beehive.netui.script.ExpressionEvaluatorFactory;
 import org.apache.beehive.netui.script.ExpressionUpdateException;
-import org.apache.beehive.netui.script.common.ImplicitObjectBean;
+import org.apache.beehive.netui.script.el.NetUIUpdateVariableResolver;
 import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
 import org.apache.beehive.netui.util.Bundle;
 import org.apache.beehive.netui.util.logging.Logger;
 
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.el.VariableResolver;
+
+import org.apache.struts.action.ActionForm;
 
 public class ExpressionHandling
 {
@@ -97,11 +117,10 @@
     public void updateExpression(String expr, Object value, PageContext 
pageContext)
             throws ExpressionUpdateException, JspException
     {
-
-        // @todo: eddie needs to review this, it doesn't seem quite right.  
This is called by tree.
         if (isExpression(expr)) {
-            ImplicitObjectBean bean = 
ImplicitObjectUtil.getImplicitObjects(pageContext, _tag);
-            ExpressionEvaluatorFactory.getInstance().update(expr, value, bean, 
false);
+
+            VariableResolver vr = 
ImplicitObjectUtil.getUpdateVariableResolver(pageContext.getRequest(), 
pageContext.getResponse(), false);
+            ExpressionEvaluatorFactory.getInstance().update(expr, value, vr, 
false);
         }
         else {
             String s = Bundle.getString("Tags_BindingUpdateExpressionError", 
new Object[]{expr});
@@ -128,7 +147,7 @@
      */
     private boolean isExpression(String expression)
     {
-        // @TODO: eko -- push this into the ExpressionEvaluator
+        // todo: eko -- push this into the ExpressionEvaluator
         if (expression == null)
             return false;
         return getExpressionEvaluator().isExpression(expression);
@@ -149,9 +168,7 @@
         Object result = null;
 
         try {
-            // @perf: todo -- this is silly...
-            ImplicitObjectBean bean = 
ImplicitObjectUtil.getImplicitObjects(pageContext, _tag);
-            result = getExpressionEvaluator().evaluateStrict(expression, bean);
+            result = getExpressionEvaluator().evaluateStrict(expression, 
pageContext.getVariableResolver());
         }
         catch (ExpressionEvaluationException ee) {
             // if there is an expression evaluation error set the error and

Modified: 
incubator/beehive/trunk/netui/src/webapp-template/config/netui-config-default.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/webapp-template/config/netui-config-default.xml?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/webapp-template/config/netui-config-default.xml&r1=106822&p2=incubator/beehive/trunk/netui/src/webapp-template/config/netui-config-default.xml&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/webapp-template/config/netui-config-default.xml
   (original)
+++ 
incubator/beehive/trunk/netui/src/webapp-template/config/netui-config-default.xml
   Sun Nov 28 10:15:40 2004
@@ -9,16 +9,6 @@
         <expression-language>
             <name>netuiel</name>
             
<factory-class>org.apache.beehive.netui.script.el.ExpressionEvaluatorImpl$NetUIELEngineFactory</factory-class>
-            <binding-contexts>
-                <binding-context>
-                    <name>bundle</name>
-                    
<factory-class>org.apache.beehive.netui.databinding.script.el.BundleVariableResolver$BundleContextFactory</factory-class>
-                </binding-context>
-                <binding-context>
-                    <name>container</name>
-                    
<factory-class>org.apache.beehive.netui.databinding.script.el.ContainerVariableResolver$ContainerContextFactory</factory-class>
-                </binding-context>
-            </binding-contexts>
         </expression-language>
     </expression-languages>
 

Modified: 
incubator/beehive/trunk/netui/src/webapp-template/default/WEB-INF/netui-config.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/webapp-template/default/WEB-INF/netui-config.xml?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/src/webapp-template/default/WEB-INF/netui-config.xml&r1=106822&p2=incubator/beehive/trunk/netui/src/webapp-template/default/WEB-INF/netui-config.xml&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/src/webapp-template/default/WEB-INF/netui-config.xml
  (original)
+++ 
incubator/beehive/trunk/netui/src/webapp-template/default/WEB-INF/netui-config.xml
  Sun Nov 28 10:15:40 2004
@@ -9,20 +9,7 @@
         <expression-language>
             <name>netuiel</name>
             
<factory-class>org.apache.beehive.netui.script.el.ExpressionEvaluatorImpl$NetUIELEngineFactory</factory-class>
-            <binding-contexts>
-                <binding-context>
-                    <name>bundle</name>
-                    
<factory-class>org.apache.beehive.netui.databinding.script.el.BundleVariableResolver$BundleContextFactory</factory-class>
-                </binding-context>
-                <binding-context>
-                    <name>container</name>
-                    
<factory-class>org.apache.beehive.netui.databinding.script.el.ContainerVariableResolver$ContainerContextFactory</factory-class>
-                </binding-context>
-            </binding-contexts>
         </expression-language>
     </expression-languages>
-
-    <iterator-factories>
-    </iterator-factories>
 
 </netui-config>

Modified: 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AbstractExpressionTest.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AbstractExpressionTest.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AbstractExpressionTest.java&r1=106822&p2=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AbstractExpressionTest.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AbstractExpressionTest.java
  (original)
+++ 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AbstractExpressionTest.java
  Sun Nov 28 10:15:40 2004
@@ -17,23 +17,19 @@
  */
 package org.apache.beehive.netui.test.script;
 
-// java imports 
-
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.PageContext;
+import javax.servlet.jsp.el.VariableResolver;
 
-// internal imports
+import org.apache.beehive.netui.script.ExpressionEvaluator;
+import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
+import org.apache.beehive.netui.script.el.NetUIUpdateVariableResolver;
 import org.apache.beehive.netui.test.beans.SimpleTypeActionForm;
 import org.apache.beehive.netui.test.beans.ComplexTypeActionForm;
 import org.apache.beehive.netui.test.servlet.ServletFactory;
 
-import org.apache.beehive.netui.script.ExpressionEvaluator;
-import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
-import org.apache.beehive.netui.script.common.ImplicitObjectBean;
-
-// external imports
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
@@ -47,63 +43,81 @@
 public abstract class AbstractExpressionTest
     extends TestCase
 {
-    protected PageContext _fauxPageContext = null;
-    protected ServletRequest _fauxRequest = null;
-    protected ServletResponse _fauxResponse = null;
-    protected ActionForm _fauxActionForm = null;
-    protected SimpleTypeActionForm _simpleActionForm = null;
-    protected ComplexTypeActionForm _complexActionForm = null;
+    protected static final int COMPLEX_FORM = 1;
+    protected static final int SIMPLE_FORM = 2;
 
-    protected abstract ExpressionEvaluator getExpressionEvaluator();
+    private PageContext _fauxPageContext = null;
+    private ServletRequest _fauxRequest = null;
+    private ServletResponse _fauxResponse = null;
+    private SimpleTypeActionForm _simpleActionForm = null;
+    private ComplexTypeActionForm _complexActionForm = null;
 
-    protected static ImplicitObjectBean initContexts(ServletRequest request, 
ServletResponse response, ActionForm form)
+    public AbstractExpressionTest(String name)
     {
-        ImplicitObjectBean bean = 
ImplicitObjectUtil.getImplicitObjects(request, response, form);
-        return bean;
+        super(name);
     }
 
-    protected static ImplicitObjectBean initContexts(PageContext pc)
+    public static Test suite()
     {
-        ImplicitObjectBean bean = ImplicitObjectUtil.getImplicitObjects(pc, 
null);
-        return bean;
+        return new TestSuite(AbstractExpressionTest.class);
     }
 
-    protected Object evaluateExpression(String expression, PageContext pc)
-        throws Exception
+    public static void main(String[] args)
     {
-        ImplicitObjectBean bean = initContexts(pc);
+        junit.textui.TestRunner.run(suite());
+    }
+
+    protected PageContext getPageContext() {
+        return _fauxPageContext;
+    }
+
+    public ServletRequest getRequest() {
+        return _fauxRequest;
+    }
+
+    public ServletResponse getResponse() {
+        return _fauxResponse;
+    }
+
+    protected abstract ExpressionEvaluator getExpressionEvaluator();
 
-        return getExpressionEvaluator().evaluateStrict(expression, bean);
+    protected final Object evaluateExpression(String expression, PageContext 
pc)
+        throws Exception
+    {
+        return getExpressionEvaluator().evaluateStrict(expression, 
ImplicitObjectUtil.getReadVariableResolver(pc));
     }
 
-    protected void evaluateUpdateExpression(String expression, Object value, 
ServletRequest request, ServletResponse response, ActionForm form)
+    protected final void evaluateUpdateExpression(String expression, Object 
value, ServletRequest request, ServletResponse response, ActionForm form)
         throws Exception
     {
         evaluateUpdateExpression(expression, value, request, response, form, 
true);
     }
 
-    protected void evaluateUpdateExpression(String expression, Object value, 
ServletRequest request, ServletResponse response, ActionForm form, boolean 
requestParameter)
+    protected final void evaluateUpdateExpression(String expression, Object 
value, ServletRequest request, ServletResponse response, ActionForm form, 
boolean requestParameter)
         throws Exception
     {
-        ImplicitObjectBean bean = initContexts(request, response, form);
-        getExpressionEvaluator().update(expression, value, bean, 
requestParameter);
+        Object theForm = form;
+        if(theForm == null)
+            theForm = 
request.getAttribute(org.apache.struts.taglib.html.Constants.BEAN_KEY);
+
+        VariableResolver vr = 
ImplicitObjectUtil.getUpdateVariableResolver(theForm, request, response, 
requestParameter);
+
+        getExpressionEvaluator().update(expression, value, vr, 
requestParameter);
     }
 
     protected void setUp()
     {
         _fauxPageContext = ServletFactory.getPageContext();
-        _fauxRequest = _fauxPageContext.getRequest();
-        _fauxResponse = _fauxPageContext.getResponse();
+        _fauxRequest = getPageContext().getRequest();
+        _fauxResponse = getPageContext().getResponse();
 
         _simpleActionForm = new SimpleTypeActionForm();
         _complexActionForm = new ComplexTypeActionForm();
-        _fauxActionForm = _simpleActionForm;
 
-        _fauxPageContext.getRequest().setAttribute("simpleBean", 
_simpleActionForm);
-        _fauxPageContext.getRequest().setAttribute("complexBean", 
_complexActionForm);
-        
-        // put the simpleBean under the Constants.BEAN_KEY
-        useForm("simpleBean");
+        getPageContext().getRequest().setAttribute("simpleBean", 
_simpleActionForm);
+        getPageContext().getRequest().setAttribute("complexBean", 
_complexActionForm);
+
+        useForm(SIMPLE_FORM);
 
         org.apache.beehive.netui.util.config.ConfigUtil.loadDefault();
     }
@@ -115,39 +129,27 @@
         _fauxResponse = null;
     }
 
-    protected void useForm(String formName)
+    protected void useForm(int formId)
     {
-        HttpServletRequest request = 
(HttpServletRequest)_fauxPageContext.getRequest();
-        Object form = request.getAttribute(formName);
-        assert form instanceof ActionForm;
+        Object form = null;
+        HttpServletRequest request = 
(HttpServletRequest)getPageContext().getRequest();
+        if(formId == SIMPLE_FORM)
+            form = request.getAttribute("simpleBean");
+        else if(formId == COMPLEX_FORM)
+            form = request.getAttribute("complexBean");
 
-        useForm(request, (ActionForm)form);
+        useForm(form);
     }
 
-    protected void useForm(ServletRequest request, ActionForm actionForm)
+    protected void useForm(Object actionForm)
     {
-        request.setAttribute(Constants.BEAN_KEY, actionForm);
+        getPageContext().getRequest().setAttribute(Constants.BEAN_KEY, 
actionForm);
+        getPageContext().setAttribute("actionForm", actionForm);
     }
 
     protected ActionForm getActionForm()
     {
-        HttpServletRequest request = 
(HttpServletRequest)_fauxPageContext.getRequest();
+        HttpServletRequest request = 
(HttpServletRequest)getPageContext().getRequest();
         return (ActionForm)request.getAttribute(Constants.BEAN_KEY);
     }
-
-    public AbstractExpressionTest(String name)
-    {
-        super(name);
-    }
-
-    public static Test suite()
-    {
-        return new TestSuite(AbstractExpressionTest.class);
-    }
-
-    public static void main(String[] args)
-    {
-        junit.textui.TestRunner.run(suite());
-    }
-
 }

Modified: 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AccessTest.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AccessTest.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AccessTest.java&r1=106822&p2=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AccessTest.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AccessTest.java
      (original)
+++ 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/AccessTest.java
      Sun Nov 28 10:15:40 2004
@@ -38,9 +38,9 @@
     {
         String productName = " Mountain Bike Frame";
 
-        _fauxPageContext.setAttribute("iproduct", 
IProduct.Factory.getInstance(productName, 2500.00));
+        getPageContext().setAttribute("iproduct", 
IProduct.Factory.getInstance(productName, 2500.00));
 
-        Object result = evaluateExpression("{pageScope.iproduct.name}", 
_fauxPageContext);
+        Object result = evaluateExpression("{pageScope.iproduct.name}", 
getPageContext());
         assertEquals(productName, result);
     }
 
@@ -59,10 +59,10 @@
 
             java.beans.PropertyDescriptor[] pds = 
java.beans.Introspector.getBeanInfo(item.getClass()).getPropertyDescriptors();
 
-            _fauxPageContext.setAttribute("currentItem", item);
+            getPageContext().setAttribute("currentItem", item);
 
-            Object key = evaluateExpression("{pageScope.currentItem.key}", 
_fauxPageContext);
-            Object value = evaluateExpression("{pageScope.currentItem.value}", 
_fauxPageContext);
+            Object key = evaluateExpression("{pageScope.currentItem.key}", 
getPageContext());
+            Object value = evaluateExpression("{pageScope.currentItem.value}", 
getPageContext());
             System.out.println("key: " + key + " value: " + value);
         }
     }

Modified: 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/BundleScriptTest.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/BundleScriptTest.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/BundleScriptTest.java&r1=106822&p2=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/BundleScriptTest.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/BundleScriptTest.java
        (original)
+++ 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/BundleScriptTest.java
        Sun Nov 28 10:15:40 2004
@@ -38,18 +38,18 @@
         throws Exception
     {
         BundleContext bc = createBundleContext();
-        BundleMap bundleMap = new 
BundleMap((HttpServletRequest)_fauxPageContext.getRequest(),
-                                            
_fauxPageContext.getServletContext(),
+        BundleMap bundleMap = new 
BundleMap((HttpServletRequest)getPageContext().getRequest(),
+                                            
getPageContext().getServletContext(),
                                             bc);
-        _fauxPageContext.setAttribute("bundle", bundleMap);
+        getPageContext().setAttribute("bundle", bundleMap);
 
         bc.addBundle("bundle1", 
"org/apache/beehive/netui/test/databinding/testdata/bundle1");
         bc.addBundle("bundle2", 
"org/apache/beehive/netui/test/databinding/testdata/bundle2");
 
-        String val = (String)evaluateExpression("{bundle.bundle1.simpleKey}", 
_fauxPageContext);
+        String val = (String)evaluateExpression("{bundle.bundle1.simpleKey}", 
getPageContext());
         assertEquals("This is a simple message.", val);
 
-        val = (String)evaluateExpression("{bundle.bundle2.bundle2Message}", 
_fauxPageContext);
+        val = (String)evaluateExpression("{bundle.bundle2.bundle2Message}", 
getPageContext());
         assertEquals("bundle2MessageValue", val);
     }
 
@@ -62,18 +62,18 @@
         bc.addBundle("bundle1", 
"org/apache/beehive/netui/test/databinding/testdata/bundle1", germany);
         bc.addBundle("bundle2", 
"org/apache/beehive/netui/test/databinding/testdata/bundle2");
 
-        BundleMap bundleMap = new 
BundleMap((HttpServletRequest)_fauxPageContext.getRequest(),
-                                            
_fauxPageContext.getServletContext(),
+        BundleMap bundleMap = new 
BundleMap((HttpServletRequest)getPageContext().getRequest(),
+                                            
getPageContext().getServletContext(),
                                             bc);
-        _fauxPageContext.setAttribute("bundle", bundleMap);
+        getPageContext().setAttribute("bundle", bundleMap);
 
-        String val = (String)evaluateExpression("{bundle.bundle1.localHello}", 
_fauxPageContext);
+        String val = (String)evaluateExpression("{bundle.bundle1.localHello}", 
getPageContext());
         assertEquals("Hallo von Deutschland", val);
 
-        val = (String)evaluateExpression("{bundle.bundle2.whereverYouAre}", 
_fauxPageContext);
+        val = (String)evaluateExpression("{bundle.bundle2.whereverYouAre}", 
getPageContext());
         assertEquals("Hello from Colorado", val);
 
-        val = (String)evaluateExpression("{bundle.bundle1.noi18nMessage}", 
_fauxPageContext);
+        val = (String)evaluateExpression("{bundle.bundle1.noi18nMessage}", 
getPageContext());
         assertEquals("This message is never localized", val);
     }
 
@@ -85,18 +85,18 @@
         throws Exception
     {
         BundleContext bc = createBundleContext();
-        BundleMap bundleMap = new 
BundleMap((HttpServletRequest)_fauxPageContext.getRequest(),
-                                            
_fauxPageContext.getServletContext(),
+        BundleMap bundleMap = new 
BundleMap((HttpServletRequest)getPageContext().getRequest(),
+                                            
getPageContext().getServletContext(),
                                             bc);
         // toString an empty map
         System.out.println("budleMap.toString(): " + bundleMap.toString());
 
-        _fauxPageContext.setAttribute("bundle", bundleMap);
+        getPageContext().setAttribute("bundle", bundleMap);
 
         bc.addBundle("bundle1", 
"org/apache/beehive/netui/test/databinding/testdata/bundle1");
         bc.addBundle("bundle2", 
"org/apache/beehive/netui/test/databinding/testdata/bundle2");
 
-        String val = (String)evaluateExpression("{bundle.bundle1.simpleKey}", 
_fauxPageContext);
+        String val = (String)evaluateExpression("{bundle.bundle1.simpleKey}", 
getPageContext());
         assertEquals("This is a simple message.", val);
 
         // toString a BundleMap that has bundles

Modified: 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionTest.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionTest.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionTest.java&r1=106822&p2=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionTest.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionTest.java
  (original)
+++ 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionTest.java
  Sun Nov 28 10:15:40 2004
@@ -17,21 +17,15 @@
  */
 package org.apache.beehive.netui.test.script;
 
-// java imports
-
-// internal imports
-import org.apache.beehive.netui.test.beans.FooJavaBean;
-import org.apache.beehive.netui.test.beans.SimpleTypeActionForm;
-
 import org.apache.beehive.netui.script.ExpressionEvaluator;
 import org.apache.beehive.netui.script.ExpressionEvaluatorFactory;
+import org.apache.beehive.netui.test.beans.FooJavaBean;
+import org.apache.beehive.netui.test.beans.SimpleTypeActionForm;
 
 import org.apache.beehive.netui.util.logging.Logger;
 
-// external imports
-
 /**
- * Unit tests for XScript expression parsing.
+ * Unit tests for NetUI EL expression parsing.
  */
 public abstract class ExpressionTest
     extends AbstractExpressionTest
@@ -183,8 +177,8 @@
     public void testPageContext()
     {
         FooJavaBean bean = new FooJavaBean("JunitTestJavaBean");
-        _fauxPageContext.setAttribute("foo", bean);
-        assertEquals(bean.getTextProperty(), 
((FooJavaBean)_fauxPageContext.getAttribute("foo")).getTextProperty());
+        getPageContext().setAttribute("foo", bean);
+        assertEquals(bean.getTextProperty(), 
((FooJavaBean)getPageContext().getAttribute("foo")).getTextProperty());
     }
 
     /** Test a simple String read */
@@ -192,9 +186,9 @@
         throws Exception
     {
         FooJavaBean bean = new FooJavaBean("JunitTestJavaBean");
-        _fauxPageContext.setAttribute("foo", bean);
+        getPageContext().setAttribute("foo", bean);
 
-        Object result = evaluateExpression("{pageScope.foo.textProperty}", 
_fauxPageContext);
+        Object result = evaluateExpression("{pageScope.foo.textProperty}", 
getPageContext());
         assertEquals(result, bean.getTextProperty());
     }
 
@@ -203,25 +197,25 @@
     {
         Object result = null;
 
-        result = 
evaluateExpression("{requestScope.simpleBean._StringProperty}", 
_fauxPageContext);
-        
assertTrue(result.equals(((SimpleTypeActionForm)_fauxPageContext.getRequest().getAttribute("simpleBean")).get_StringProperty()));
+        result = 
evaluateExpression("{requestScope.simpleBean._StringProperty}", 
getPageContext());
+        
assertTrue(result.equals(((SimpleTypeActionForm)getPageContext().getRequest().getAttribute("simpleBean")).get_StringProperty()));
         result = null;
 
-        result = 
evaluateExpression("{requestScope.simpleBean._stringProperty}", 
_fauxPageContext);
-        
assertTrue(result.equals(((SimpleTypeActionForm)_fauxPageContext.getRequest().getAttribute("simpleBean")).get_stringProperty()));
+        result = 
evaluateExpression("{requestScope.simpleBean._stringProperty}", 
getPageContext());
+        
assertTrue(result.equals(((SimpleTypeActionForm)getPageContext().getRequest().getAttribute("simpleBean")).get_stringProperty()));
     }
 
     public void testNullProperty()
         throws Exception
     {
-        Object result = 
evaluateExpression("{requestScope.simpleBean.nullProperty}", _fauxPageContext);
+        Object result = 
evaluateExpression("{requestScope.simpleBean.nullProperty}", getPageContext());
         assertNull(result);
     }
 
     public void testCharProperty()
         throws Exception
     {
-        Object result = 
evaluateExpression("{requestScope.simpleBean.charProperty}", _fauxPageContext);
+        Object result = 
evaluateExpression("{requestScope.simpleBean.charProperty}", getPageContext());
         if(!(result instanceof String && ((String)result).equals("a")))
             throw new ExpressionTestError("The Character value returned from 
XScript was not valid.", null);
     }
@@ -229,7 +223,7 @@
     public void testEmptyReadExpr()
         throws Exception
     {
-        Object result = evaluateExpression("{}", _fauxPageContext);
+        Object result = evaluateExpression("{}", getPageContext());
         assertNull(result);
     }
 
@@ -240,7 +234,7 @@
          boolean exception = false;
          try
          {
-             evaluateExpression("{requestScope.simpleBean.neverMoreProperty}", 
_fauxPageContext);
+             evaluateExpression("{requestScope.simpleBean.neverMoreProperty}", 
getPageContext());
          }
          catch(Exception e)
          {
@@ -258,7 +252,7 @@
 
         try
         {
-            result = 
evaluateExpression("{requestScope.simpleBean.StringProperty}", 
_fauxPageContext);
+            result = 
evaluateExpression("{requestScope.simpleBean.StringProperty}", 
getPageContext());
         }
         catch(Exception e)
         {
@@ -269,7 +263,7 @@
         pass = true;
         try
         {
-            result = 
evaluateExpression("{requestScope.simpleBean.stringProperty}", 
_fauxPageContext);
+            result = 
evaluateExpression("{requestScope.simpleBean.stringProperty}", 
getPageContext());
         }
         catch(Exception e)
         {
@@ -314,9 +308,7 @@
                 String value = (String)data[i][1];
 
                 Object result = null;
-                result = evaluateExpression(expr, _fauxPageContext);
-
-                if(_logger.isDebugEnabled()) _logger.debug("***** expr: " + 
expr + " result: " + result + " complex prop: " + 
_complexActionForm.getMap().get("\""));
+                result = evaluateExpression(expr, getPageContext());
 
                 assertTrue(value.equals(result));
             }
@@ -348,5 +340,4 @@
     {
         super(name);
     }
-
 }

Modified: 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java&r1=106822&p2=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java
    (original)
+++ 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java
    Sun Nov 28 10:15:40 2004
@@ -17,34 +17,19 @@
  */
 package org.apache.beehive.netui.test.script;
 
-// java imports
 import java.math.BigDecimal;
-
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
-
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 
-// internal imports
 import org.apache.beehive.netui.test.beans.SimpleTypeActionForm;
 import org.apache.beehive.netui.test.beans.ComplexTypeActionForm;
 import org.apache.beehive.netui.test.tools.AssertHelper;
-
-import org.apache.beehive.netui.script.ExpressionEvaluator;
-import org.apache.beehive.netui.script.ExpressionEvaluatorFactory;
 import org.apache.beehive.netui.script.IllegalExpressionException;
-
 import org.apache.beehive.netui.util.logging.Logger;
 
-// external imports
 import junit.framework.AssertionFailedError;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.apache.struts.action.ActionForm;
 
 /**
  *
@@ -69,7 +54,7 @@
     {
         String[] newValue = {"123", "456"};
         
-        evaluateUpdateExpression("{actionForm.stringProperty}", newValue, 
_fauxPageContext.getRequest(), _fauxPageContext.getResponse(), getActionForm());
+        evaluateUpdateExpression("{actionForm.stringProperty}", newValue, 
getPageContext().getRequest(), getPageContext().getResponse(), getActionForm());
         assertEquals(newValue[1], 
((SimpleTypeActionForm)getActionForm()).getStringProperty());
     }
 
@@ -81,8 +66,8 @@
         {
             // boolean array
             String[] boolStrArray = {"true", "false", "false", "true"};
-            evaluateUpdateExpression("{actionForm.neverMoreProperty}", 
boolStrArray, _fauxPageContext.getRequest(),
-                                     _fauxPageContext.getResponse(), 
getActionForm());
+            evaluateUpdateExpression("{actionForm.neverMoreProperty}", 
boolStrArray, getPageContext().getRequest(),
+                                     getPageContext().getResponse(), 
getActionForm());
         }
         catch(Exception e)
         {
@@ -132,10 +117,10 @@
     public void testSettingComplexTypes()
         throws Exception
     {
-        useForm("complexBean");
+        useForm(COMPLEX_FORM);
 
-        ServletRequest request = _fauxPageContext.getRequest();
-        ServletResponse response = _fauxPageContext.getResponse();
+        ServletRequest request = getPageContext().getRequest();
+        ServletResponse response = getPageContext().getResponse();
         Object[][] data = settingComplexTypeData;
         for(int i = 0; i < data.length; i++)
         {
@@ -144,34 +129,33 @@
             
             System.out.println("=========================== ????????????? 
form: " + getActionForm());
 
-            ExpressionEvaluatorFactory.getInstance().update(expr, act, 
initContexts(request, response, getActionForm()), false);
+            evaluateUpdateExpression(expr, act, request, response, 
getActionForm(), false);
 
-            Object foo = evaluateExpression(expr, _fauxPageContext);
+            Object foo = evaluateExpression(expr, getPageContext());
 
             assertTrue(act.equals(foo));
 
-            if(_logger.isDebugEnabled()) _logger.debug("returned value: " + 
evaluateExpression(expr, _fauxPageContext));
+            if(_logger.isDebugEnabled()) _logger.debug("returned value: " + 
evaluateExpression(expr, getPageContext()));
         }
 
-
         // primitive int test
         String expr = "{actionForm.intProperty}";
         evaluateUpdateExpression(expr, "42", request, response, 
getActionForm());
-        assertTrue(42 == ((Integer)evaluateExpression(expr, 
_fauxPageContext)).intValue());
+        assertTrue(42 == ((Integer)evaluateExpression(expr, 
getPageContext())).intValue());
 
         // primitive int[] test
         expr = "{actionForm.intArrayProperty}";
         evaluateUpdateExpression(expr, "42", request, response, 
getActionForm());
-        assertTrue(42 == ((int[])evaluateExpression(expr, 
_fauxPageContext))[0]);
+        assertTrue(42 == ((int[])evaluateExpression(expr, 
getPageContext()))[0]);
 
         // primitive boolean[] test
         expr = "{actionForm.boolArrayProperty}";
         evaluateUpdateExpression(expr, new String[] {"true", "true", "false", 
"true", "true"}, request, response, getActionForm());
-        assertTrue(((boolean[])evaluateExpression(expr, _fauxPageContext))[0]);
-        assertTrue(((boolean[])evaluateExpression(expr, _fauxPageContext))[1]);
-        assertTrue(!((boolean[])evaluateExpression(expr, 
_fauxPageContext))[2]);
-        assertTrue(((boolean[])evaluateExpression(expr, _fauxPageContext))[3]);
-        assertTrue(((boolean[])evaluateExpression(expr, _fauxPageContext))[4]);
+        assertTrue(((boolean[])evaluateExpression(expr, getPageContext()))[0]);
+        assertTrue(((boolean[])evaluateExpression(expr, getPageContext()))[1]);
+        assertTrue(!((boolean[])evaluateExpression(expr, 
getPageContext()))[2]);
+        assertTrue(((boolean[])evaluateExpression(expr, getPageContext()))[3]);
+        assertTrue(((boolean[])evaluateExpression(expr, getPageContext()))[4]);
     }
 
     public void testWritableContexts()
@@ -184,7 +168,7 @@
             String expr = (String)data[i][0];
             try
             {
-                ExpressionEvaluatorFactory.getInstance().update(expr, null, 
initContexts(_fauxRequest, _fauxResponse, getActionForm()), true);
+                evaluateUpdateExpression(expr, null, getRequest(), 
getResponse(), getActionForm(), true);
             }
             catch(Exception e)
             {
@@ -201,7 +185,7 @@
     public void testDirectListUpdate()
         throws Exception
     {
-        useForm("complexBean");
+        useForm(COMPLEX_FORM);
 
         executeComplexTest("list update", directListUpdate);
     }
@@ -1033,8 +1017,8 @@
             UpdateComparator comparator = (UpdateComparator)data[i][3];
 
             // @TODO: plug-in all evaluation contexts here
-            ServletRequest request = _fauxPageContext.getRequest();
-            ServletResponse response = _fauxPageContext.getResponse();
+            ServletRequest request = getPageContext().getRequest();
+            ServletResponse response = getPageContext().getResponse();
 
             try
             {
@@ -1054,8 +1038,8 @@
     private void executeComplexTest(String testName, Object[][] data)
         throws Exception
     {
-        useForm("complexBean");
-        
+        useForm(COMPLEX_FORM);
+
         for(int i = 0; i < data.length; i++)
         {
             String expr = (String)data[i][0];
@@ -1065,9 +1049,9 @@
 
             try
             {
-                evaluateUpdateExpression(expr, value, _fauxRequest, 
_fauxResponse, getActionForm());
+                evaluateUpdateExpression(expr, value, getRequest(), 
getResponse(), getActionForm());
 
-                ComplexTypeActionForm complexBean = 
(ComplexTypeActionForm)_fauxRequest.getAttribute("complexBean");
+                ComplexTypeActionForm complexBean = 
(ComplexTypeActionForm)getRequest().getAttribute("complexBean");
 
                 comparator.compareComplex(expected, complexBean);
             }

Modified: 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/PageInputTest.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/PageInputTest.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/PageInputTest.java&r1=106822&p2=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/PageInputTest.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/PageInputTest.java
   (original)
+++ 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/PageInputTest.java
   Sun Nov 28 10:15:40 2004
@@ -17,14 +17,10 @@
  */
 package org.apache.beehive.netui.test.script;
 
-// java imports
 import javax.servlet.ServletRequest;
 
-// internal imports
 import org.apache.beehive.netui.pageflow.PageFlowUtils;
-import org.apache.beehive.netui.util.logging.Logger;
-
-// external imports
+import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 
 /**
  *
@@ -32,20 +28,35 @@
 public abstract class PageInputTest
     extends AbstractExpressionTest
 {
-    private static final Logger _logger = 
Logger.getInstance(PageInputTest.class);
-
     public void testPageInputs()
         throws Exception
     {
-        ServletRequest request = _fauxPageContext.getRequest();
+        ServletRequest request = getPageContext().getRequest();
         
         String value = "This is a Page Input!";
         PageFlowUtils.addPageInput("test", value, request);
-        
-        Object result = evaluateExpression("{pageInput.test}", 
_fauxPageContext);
+
+        request.setAttribute("pageInput", 
InternalUtils.getPageInputMap(request));
+
+        Object result = evaluateExpression("{pageInput.test}", 
getPageContext());
         assert result.equals(value);
     }
     
+    public void testActionOutputs()
+        throws Exception
+    {
+        ServletRequest request = getPageContext().getRequest();
+
+        String value = "This is a Page Input!";
+        PageFlowUtils.addActionOutput("test", value, request);
+
+        request.setAttribute("pageInput", 
InternalUtils.getPageInputMap(request));
+
+        Object result = evaluateExpression("{pageInput.test}", 
getPageContext());
+
+        assert result.equals(value);
+    }
+
     public PageInputTest(String name)
     {
         super(name);

Modified: 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELCustomBindingContextTest.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELCustomBindingContextTest.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELCustomBindingContextTest.java&r1=106822&p2=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELCustomBindingContextTest.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELCustomBindingContextTest.java
      (original)
+++ 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELCustomBindingContextTest.java
      Sun Nov 28 10:15:40 2004
@@ -51,13 +51,13 @@
         ConfigUtil.init(is);
         
         PortalVariableResolver.SkinBean skinBean = new 
PortalVariableResolver.SkinBean();
-        Object result = evaluateExpression("{portal.skin.stringProperty}", 
_fauxPageContext);
+        Object result = evaluateExpression("{portal.skin.stringProperty}", 
getPageContext());
         assertEquals(skinBean.getStringProperty(), result);
 
         boolean success = false;
         try
         {
-            evaluateExpression("{portal.notSkin.stringProperty}", 
_fauxPageContext);
+            evaluateExpression("{portal.notSkin.stringProperty}", 
getPageContext());
         }
         catch(Exception e)
         {

Modified: 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELExpressionUpdateTest.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELExpressionUpdateTest.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELExpressionUpdateTest.java&r1=106822&p2=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELExpressionUpdateTest.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELExpressionUpdateTest.java
  (original)
+++ 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELExpressionUpdateTest.java
  Sun Nov 28 10:15:40 2004
@@ -17,14 +17,10 @@
  */
 package org.apache.beehive.netui.test.script.el;
 
-// java imports
-
-// internal imports
 import org.apache.beehive.netui.test.script.ExpressionUpdateTest;
 import org.apache.beehive.netui.script.ExpressionEvaluator;
 import org.apache.beehive.netui.script.ExpressionEvaluatorFactory;
 
-// external imports
 import junit.framework.Test;
 import junit.framework.TestSuite;
 

Modified: 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELPageInputTest.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELPageInputTest.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELPageInputTest.java&r1=106822&p2=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELPageInputTest.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELPageInputTest.java
 (original)
+++ 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/el/NetUIELPageInputTest.java
 Sun Nov 28 10:15:40 2004
@@ -17,14 +17,10 @@
  */
 package org.apache.beehive.netui.test.script.el;
 
-// java imports
-
-// internal imports
 import org.apache.beehive.netui.test.script.PageInputTest;
 import org.apache.beehive.netui.script.ExpressionEvaluator;
 import org.apache.beehive.netui.script.ExpressionEvaluatorFactory;
 
-// external imports
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
@@ -45,6 +41,7 @@
     {
         TestSuite suite = new TestSuite();
         suite.addTest(new NetUIELPageInputTest("testPageInputs"));
+        suite.addTest(new NetUIELPageInputTest("testActionOutputs"));
         return suite;
     }
     

Modified: 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/servlet/FauxPageContext.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/servlet/FauxPageContext.java?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/servlet/FauxPageContext.java&r1=106822&p2=incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/servlet/FauxPageContext.java&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/servlet/FauxPageContext.java
        (original)
+++ 
incubator/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/servlet/FauxPageContext.java
        Sun Nov 28 10:15:40 2004
@@ -17,7 +17,6 @@
  */
 package org.apache.beehive.netui.test.servlet;
 
-// java imports
 import java.util.Enumeration;
 import java.util.Hashtable;
 
@@ -31,11 +30,11 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.jsp.PageContext;
 import javax.servlet.jsp.JspWriter;
+import javax.servlet.jsp.el.ELException;
+import javax.servlet.jsp.el.VariableResolver;
 import javax.servlet.jsp.tagext.BodyContent;
 
-// internal imports
-
-// external imports
+import org.apache.taglibs.standard.lang.jstl.JSTLVariableResolver;
 
 /**
  *
@@ -224,14 +223,37 @@
     }
 
     // Servlet 2.4 method implementation
-    public javax.servlet.jsp.el.VariableResolver getVariableResolver()
+    public VariableResolver getVariableResolver()
     {
-        return null;
+        return new FauxVariableResolver(this);
     }
 
     // Servlet 2.4 method implementation
     public javax.servlet.jsp.el.ExpressionEvaluator getExpressionEvaluator()
     {
         return null;
+    }
+
+    public static class FauxVariableResolver
+        implements VariableResolver {
+
+        private PageContext _pageContext = null;
+        private JSTLVariableResolver _vr = null;
+
+        private FauxVariableResolver(PageContext pageContext) {
+            _pageContext = pageContext;
+            _vr = new JSTLVariableResolver();
+        }
+
+        public Object resolveVariable(String name)
+            throws ELException
+        {
+            try {
+                return _vr.resolveVariable(name, _pageContext);
+            }
+            catch(org.apache.taglibs.standard.lang.jstl.ELException e) {
+                throw new ELException(e);
+            }
+        }
     }
 }

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml?view=diff&rev=106823&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml&r1=106822&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml&r2=106823
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml
       (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/local-netui-config.xml
       Sun Nov 28 10:15:40 2004
@@ -9,16 +9,6 @@
         <expression-language>
             <name>netuiel</name>
             
<factory-class>org.apache.beehive.netui.script.el.ExpressionEvaluatorImpl$NetUIELEngineFactory</factory-class>
-            <binding-contexts>
-                <binding-context>
-                    <name>bundle</name>
-                    
<factory-class>org.apache.beehive.netui.databinding.script.el.BundleVariableResolver$BundleContextFactory</factory-class>
-                </binding-context>
-                <binding-context>
-                    <name>container</name>
-                    
<factory-class>org.apache.beehive.netui.databinding.script.el.ContainerVariableResolver$ContainerContextFactory</factory-class>
-                </binding-context>
-            </binding-contexts>
         </expression-language>
     </expression-languages>
 

Reply via email to