You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2006/03/24 18:27:16 UTC

svn commit: r388583 [2/2] - in /beehive/trunk/netui: src/pageflow/org/apache/beehive/netui/script/ src/pageflow/org/apache/beehive/netui/script/common/ src/pageflow/org/apache/beehive/netui/script/common/bundle/ src/pageflow/org/apache/beehive/netui/sc...

Copied: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/MapFacade.java (from r387052, beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/AbstractAttributeMap.java)
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/MapFacade.java?p2=beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/MapFacade.java&p1=beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/AbstractAttributeMap.java&r1=387052&r2=388583&rev=388583&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/AbstractAttributeMap.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/MapFacade.java Fri Mar 24 09:27:11 2006
@@ -22,85 +22,115 @@
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
+import java.util.Iterator;
+import java.util.Collections;
 
 /**
- *
+ * Facade used to put a {@link Map} API atop another object.  For example, a sublcass might allow
+ * the {@link javax.servlet.http.HttpSession} to be treated like a Map for purposes of referencing session
+ * attributes from expressions.
  */
-public abstract class AbstractAttributeMap
+public abstract class MapFacade
     implements Map {
 
     private Map _map = null;
 
+    /**
+     * Subclasses should implement this method in order to get a value from the
+     * backing object.
+     * @param key the key of the object
+     * @return the value associated with the <code>key</code>.
+     */
     protected abstract Object getValue(Object key);
 
+    /**
+     * Subclasses should implement this method in order to set a value in
+     * the backing object.
+     * @param key the key of the object
+     * @param value the value to associate with the key
+     * @return the previous value associated with this key or <code>null</code> if no value was associated
+     */
     protected abstract Object putValue(Object key, Object value);
 
-    protected abstract Enumeration getKeysEnumeration();
+    /**
+     * Get an {@link Enumeration} of the keys associated with a backing object.  Note,
+     * an {@link Enumeration} is used here because many web-based attribute maps
+     * expose their list of keys only as enumeration objects.
+     * @return the {@link Enumeration} of keys available from the backing object
+     */
+    protected abstract Iterator getKeys();
 
+    /*--------------------------------------------------------------------------
+
+    Implementation of the {@link Map} interface.
+
+    -------------------------------------------------------------------------- */
     public void clear() {
     }
 
     public boolean containsKey(Object key) {
-        return (getValue(key) != null);
+        return getValue(key) != null;
+    }
+
+    public Object get(Object key) {
+        return getValue(key);
+    }
+
+    public Object put(Object key, Object value) {
+        return putValue(key, value);
     }
 
     public boolean containsValue(Object key) {
+        assert getMap() != null;
         return getMap().containsValue(key);
     }
 
     public Set entrySet() {
-        return getMap().entrySet();
-    }
-
-    public Object get(Object key) {
-        return getValue(key);
+        assert getMap() != null;
+        return Collections.unmodifiableSet(getMap().entrySet());
     }
 
     public boolean isEmpty() {
+        assert getMap() != null;
         return getMap().isEmpty();
     }
 
     public Set keySet() {
-        return getMap().keySet();
-    }
-
-    public Object put(Object key, Object value) {
-        return putValue(key, value);
+        assert getMap() != null;
+        return Collections.unmodifiableSet(getMap().keySet());
     }
 
     public void putAll(Map t) {
+        assert getMap() != null;
         getMap().putAll(t);
     }
 
     public Object remove(Object key) {
+        assert getMap() != null;
         return getMap().remove(key);
     }
 
     public int size() {
+        assert getMap() != null;
         return getMap().size();
     }
 
     public Collection values() {
-        return getMap().values();
+        assert getMap() != null;
+        return Collections.unmodifiableCollection(getMap().values());
     }
 
     private Map getMap() {
-        if(_map == null)
-            _map = convertToMap();
-
-        return _map;
-    }
-
-    private Map convertToMap() {
-        if(_map == null)
+        if(_map == null) {
             _map = new HashMap();
 
-        Enumeration keys = getKeysEnumeration();
-        while(keys.hasMoreElements()) {
-            Object key = keys.nextElement();
-            _map.put(key, getValue(key));
+            Iterator keys = getKeys();
+            assert keys != null;
+            while(keys.hasNext()) {
+                Object key = keys.next();
+                _map.put(key, getValue(key));
+            }
         }
-
         return _map;
     }
 }

Propchange: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/MapFacade.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java?rev=388583&r1=388582&r2=388583&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/ParseUtils.java Fri Mar 24 09:27:11 2006
@@ -36,57 +36,62 @@
 /**
  *
  */
-public class ParseUtils {
+public final class ParseUtils {
 
     private static final Logger LOGGER = Logger.getInstance(ParseUtils.class);
-
-    private static final HashMap/*<String, ParsedExpression>*/ PARSED_CACHE = new HashMap/*<String, ParsedExpression>*/();
+    private static final HashMap/*<String, ParsedExpression>*/ PARSED_CACHE = new HashMap();
 
     /* do not construct */
-    private ParseUtils() {}
+    private ParseUtils() {
+    }
 
-    public static final ParsedExpression parse(String exprStr) {
-        ParsedExpression pe = (ParsedExpression) PARSED_CACHE.get(exprStr);
+    /**
+     * Parse the givne String into a {@link ParsedExpression}.
+     * @param expression the expression
+     * @return the parsed expression
+     */
+    public static ParsedExpression parse(String expression) {
+        ParsedExpression pe = (ParsedExpression)PARSED_CACHE.get(expression);
 
         if(pe != null)
             return pe;
 
         try {
-            NetUIELParser learn = new NetUIELParser(new StringReader(exprStr));
+            NetUIELParser learn = new NetUIELParser(new StringReader(expression));
 
             ParsedExpression expr = learn.parse();
             expr.seal();
 
             /* infrequent; this should only happen when there is a cache miss */
             synchronized(PARSED_CACHE) {
-                PARSED_CACHE.put(exprStr, expr);
+                PARSED_CACHE.put(expression, expr);
             }
 
             return expr;
         } catch(ParseException e) {
-            String msg = "Error occurred parsing expression \"" + exprStr + "\".";
+            String msg = "Error occurred parsing expression \"" + expression + "\".";
             LOGGER.error(msg, e);
             throw new ExpressionParseException(msg, e);
         } catch(TokenMgrError tm) {
-            String msg = "Error occurred parsing expression \"" + exprStr + "\".";
+            String msg = "Error occurred parsing expression \"" + expression + "\".";
             LOGGER.error(msg, tm);
             throw new ExpressionParseException(msg, tm);
         }
     }
 
-    public static final Object evaluate(String exprStr, NetUIVariableResolver vr) {
+    public static Object evaluate(String exprStr, NetUIVariableResolver vr) {
         ParsedExpression expr = parse(exprStr);
         assert expr != null;
         return expr.evaluate(vr);
     }
 
-    public static final void update(String exprStr, Object value, NetUIVariableResolver vr) {
+    public static void update(String exprStr, Object value, NetUIVariableResolver vr) {
         ParsedExpression expr = parse(exprStr);
         assert expr != null;
         expr.update(value, vr);
     }
 
-    public static final Class getPropertyType(Object value, String name, PropertyCache cache) {
+    public static Class getPropertyType(Object value, String name, PropertyCache cache) {
         assert value != null;
         assert cache != null;
 
@@ -105,7 +110,7 @@
         }
     }
 
-    public static final Object getProperty(Object value, String name, PropertyCache cache) {
+    public static Object getProperty(Object value, String name, PropertyCache cache) {
         assert value != null;
         assert cache != null;
 

Copied: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMapFacade.java (from r387052, beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMap.java)
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMapFacade.java?p2=beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMapFacade.java&p1=beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMap.java&r1=387052&r2=388583&rev=388583&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMap.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMapFacade.java Fri Mar 24 09:27:11 2006
@@ -17,31 +17,46 @@
  */
 package org.apache.beehive.netui.script.el.util;
 
-import java.util.Enumeration;
+import java.util.Iterator;
 import javax.servlet.ServletRequest;
 
+import org.apache.beehive.netui.util.iterator.EnumerationIterator;
+
 /**
- *
+ * Class that puts a {@link java.util.Map} facade atop a {@link ServletRequest}'s attribute map.
  */
-public class RequestAttributeMap
-    extends AbstractAttributeMap
-    implements BindingContext {
+public class RequestAttributeMapFacade
+    extends MapFacade
+    implements WrappedObject {
 
     private ServletRequest _request = null;
 
-    public RequestAttributeMap(ServletRequest request) {
+    public RequestAttributeMapFacade(ServletRequest request) {
         _request = request;
     }
 
+    /**
+     * Implementation of the {@link WrappedObject} API that allows the caller to discover the
+     * backing object.
+     *
+     * @return the backing object
+     */
     public Object unwrap() {
         return _request;
     }
 
     protected Object getValue(Object key) {
+        if(key == null)
+            return null;
+
+        assert _request != null;
         return _request.getAttribute(key.toString());
     }
 
     protected Object putValue(Object key, Object value) {
+        assert key != null;
+        assert _request != null;
+
         String strKey = key.toString();
         Object prev = _request.getAttribute(strKey);
 
@@ -50,7 +65,7 @@
         return prev;
     }
 
-    protected Enumeration getKeysEnumeration() {
-        return _request.getAttributeNames();
+    protected Iterator getKeys() {
+        return new EnumerationIterator(_request.getAttributeNames());
     }
 }

Propchange: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/RequestAttributeMapFacade.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMapFacade.java (from r387052, beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMap.java)
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMapFacade.java?p2=beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMapFacade.java&p1=beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMap.java&r1=387052&r2=388583&rev=388583&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMap.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMapFacade.java Fri Mar 24 09:27:11 2006
@@ -17,27 +17,39 @@
  */
 package org.apache.beehive.netui.script.el.util;
 
-import java.util.Enumeration;
+import java.util.Iterator;
 import javax.servlet.http.HttpSession;
 
+import org.apache.beehive.netui.util.iterator.EnumerationIterator;
+
 /**
- *
+ * Class that puts a {@link java.util.Map} facade atop a {@link HttpSession}'s attribute map.
  */
-public class SessionAttributeMap
-    extends AbstractAttributeMap
-    implements BindingContext {
+public class SessionAttributeMapFacade
+    extends MapFacade
+    implements WrappedObject {
 
     private HttpSession _session = null;
 
-    public SessionAttributeMap(HttpSession session) {
-        this._session = session;
+    public SessionAttributeMapFacade(HttpSession session) {
+        _session = session;
     }
 
+    /**
+     * Implementation of the {@link WrappedObject} API that allows the caller to discover the
+     * backing object.
+     *
+     * @return the backing object
+     */
     public Object unwrap() {
         return _session;
     }
 
     protected Object getValue(Object key) {
+        if(key == null)
+            return null;
+
+        assert _session != null;
         return _session.getAttribute(key.toString());
     }
 
@@ -50,7 +62,7 @@
         return prev;
     }
 
-    protected Enumeration getKeysEnumeration() {
-        return _session.getAttributeNames();
+    protected Iterator getKeys() {
+        return new EnumerationIterator(_session.getAttributeNames());
     }
 }

Propchange: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/SessionAttributeMapFacade.java
------------------------------------------------------------------------------
    svn:eol-style = native

Copied: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/WrappedObject.java (from r387052, beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/BindingContext.java)
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/WrappedObject.java?p2=beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/WrappedObject.java&p1=beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/BindingContext.java&r1=387052&r2=388583&rev=388583&view=diff
==============================================================================
--- beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/BindingContext.java (original)
+++ beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/WrappedObject.java Fri Mar 24 09:27:11 2006
@@ -20,7 +20,7 @@
 /**
  *
  */
-public interface BindingContext {
+public interface WrappedObject {
 
     public Object unwrap();
 }

Propchange: beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/util/WrappedObject.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: beehive/trunk/netui/src/util/org/apache/beehive/netui/util/iterator/EnumerationIterator.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/iterator/EnumerationIterator.java?rev=388583&r1=388582&r2=388583&view=diff
==============================================================================
--- beehive/trunk/netui/src/util/org/apache/beehive/netui/util/iterator/EnumerationIterator.java (original)
+++ beehive/trunk/netui/src/util/org/apache/beehive/netui/util/iterator/EnumerationIterator.java Fri Mar 24 09:27:11 2006
@@ -42,7 +42,7 @@
     }
 
     public Object next() {
-        if(_enum == null || hasNext() == false)
+        if(_enum == null || !hasNext())
             throw new NoSuchElementException(Bundle.getErrorString("IteratorFactory_Iterator_noSuchElement"));
         else return _enum.nextElement();
     }

Modified: beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java?rev=388583&r1=388582&r2=388583&view=diff
==============================================================================
--- beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java (original)
+++ beehive/trunk/netui/test/src/junitTests/org/apache/beehive/netui/test/script/ExpressionUpdateTest.java Fri Mar 24 09:27:11 2006
@@ -118,15 +118,11 @@
             String expr = (String)data[i][0];
             Object act = (Object)data[i][1];
 
-            System.out.println("=========================== ????????????? form: " + getActionForm());
-
             evaluateUpdateExpression(expr, act, request, response, getActionForm(), false);
-
             Object foo = evaluateExpression(expr, getPageContext());
-
             assertTrue(act.equals(foo));
 
-            if(_logger.isDebugEnabled()) _logger.debug("returned value: " + evaluateExpression(expr, getPageContext()));
+            _logger.debug("returned value: " + evaluateExpression(expr, getPageContext()));
         }
 
         // primitive int test

Modified: beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtBindingReport.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtBindingReport.xml?rev=388583&r1=388582&r2=388583&view=diff
==============================================================================
--- beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtBindingReport.xml (original)
+++ beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CtBindingReport.xml Fri Mar 24 09:27:11 2006
@@ -1,73 +1,75 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
-   <ses:sessionName>CtBindingReport</ses:sessionName>
-   <ses:tester>rich</ses:tester>
-   <ses:startDate>26 May 2005, 04:07:04.215 PM MDT</ses:startDate>
-   <ses:description>Normal errors reported by the BindingUpdateErrors tag.</ses:description>
-   <ses:tests>
-      <ses:test>
-         <ses:testNumber>1</ses:testNumber>
-         <ses:request>
-            <ses:protocol>HTTP</ses:protocol>
-            <ses:protocolVersion>1.1</ses:protocolVersion>
-            <ses:host>localhost</ses:host>
-            <ses:port>8080</ses:port>
-            <ses:uri>/coreWeb/coretags/binding/report/Controller.jpf</ses:uri>
-            <ses:method>GET</ses:method>
-            <ses:parameters/>
-            <ses:cookies>
-               <ses:cookie>
-                  <ses:name>JSESSIONID</ses:name>
-                  <ses:value>BCA7BC08EC3F8A8A81D0B47F32E2297C</ses:value>
-               </ses:cookie>
-               <ses:cookie>
-                  <ses:name>nde-textsize</ses:name>
-                  <ses:value>16px</ses:value>
-               </ses:cookie>
-            </ses:cookies>
-            <ses:headers>
-               <ses:header>
-                  <ses:name>accept</ses:name>
-                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
-               </ses:header>
-               <ses:header>
-                  <ses:name>accept-charset</ses:name>
-                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
-               </ses:header>
-               <ses:header>
-                  <ses:name>accept-encoding</ses:name>
-                  <ses:value>gzip,deflate</ses:value>
-               </ses:header>
-               <ses:header>
-                  <ses:name>accept-language</ses:name>
-                  <ses:value>en-us,en;q=0.5</ses:value>
-               </ses:header>
-               <ses:header>
-                  <ses:name>connection</ses:name>
-                  <ses:value>keep-alive</ses:value>
-               </ses:header>
-               <ses:header>
-                  <ses:name>cookie</ses:name>
-                  <ses:value>JSESSIONID=BCA7BC08EC3F8A8A81D0B47F32E2297C; nde-textsize=16px</ses:value>
-               </ses:header>
-               <ses:header>
-                  <ses:name>host</ses:name>
-                  <ses:value>localhost:8080</ses:value>
-               </ses:header>
-               <ses:header>
-                  <ses:name>keep-alive</ses:name>
-                  <ses:value>300</ses:value>
-               </ses:header>
-               <ses:header>
-                  <ses:name>user-agent</ses:name>
-                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4</ses:value>
-               </ses:header>
-            </ses:headers>
-         </ses:request>
-         <ses:response>
-            <ses:statusCode>200</ses:statusCode>
-            <ses:reason/>
-            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+<recorderSession xmlns="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+<sessionName>CtBindingReport</sessionName>
+<tester>rich</tester>
+<startDate>24 Mar 2006, 08:16:10.984 AM MST</startDate>
+<description>rich</description>
+<tests>
+<test>
+<testNumber>1</testNumber>
+<request>
+<protocol>HTTP</protocol>
+<protocolVersion>1.1</protocolVersion>
+<host>localhost</host>
+<port>8080</port>
+<uri>/coreWeb/coretags/binding/report/Controller.jpf</uri>
+<method>GET</method>
+<parameters>
+</parameters>
+<cookies>
+<cookie>
+<name>JSESSIONID</name>
+<value>F296B175664AE65D49E7CD4A67E84C4A</value>
+</cookie>
+</cookies>
+<headers>
+<header>
+<name>accept</name>
+<value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</value>
+</header>
+<header>
+<name>accept-charset</name>
+<value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</value>
+</header>
+<header>
+<name>accept-encoding</name>
+<value>gzip,deflate</value>
+</header>
+<header>
+<name>accept-language</name>
+<value>en-us,en;q=0.5</value>
+</header>
+<header>
+<name>connection</name>
+<value>keep-alive</value>
+</header>
+<header>
+<name>cookie</name>
+<value>$Version=0; JSESSIONID=F296B175664AE65D49E7CD4A67E84C4A; $Path=/coreWeb</value>
+</header>
+<header>
+<name>host</name>
+<value>localhost:8080</value>
+</header>
+<header>
+<name>keep-alive</name>
+<value>300</value>
+</header>
+<header>
+<name>testrecorder.playback.testid</name>
+<value>-488ff64a:10a2cd06eed:-7da9</value>
+</header>
+<header>
+<name>user-agent</name>
+<value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4</value>
+</header>
+</headers>
+</request>
+<response>
+<statusCode>200</statusCode>
+<reason></reason>
+<responseBody>
+<![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 	"http://www.w3.org/TR/html4/loose.dtd">
 <html lang="en">
 
@@ -105,17 +107,22 @@
  <tr><th>Error Number</th><th>Tag Type</th><th colspan="4">Error</th></tr>
 <tr><th rowspan="2">1</th><th rowspan="2">TextBox</th><th>Attribute</th><td>dataSource</td>
  <th>Expression</th><td>{actionForm.name}</td></tr>
- <tr><th valign="top">Message</th><td colspan="3">Caught exception when evaluating expression "{actionForm.name}" with available binding contexts [actionForm, pageFlow, globalApp, request, session, application, pageContext, bundle, container, url, pageInput]. Root cause: java.lang.RuntimeException: Can not evaluate the identifier "name" on a null value object.</td></tr>
+ <tr><th valign="top">Message</th><td colspan="3">Caught exception when evaluating expression "{actionForm.name}" with available binding contexts [actionForm, pageFlow, globalApp, request, session, application, pageContext, bundle, container, url, pageInput]. Root cause: java.lang.RuntimeException: Can not evaluate the identifier "name" on a null object.</td></tr>
 <tr><th rowspan="2">2</th><th rowspan="2">TextBox</th><th>Attribute</th><td>dataSource</td>
  <th>Expression</th><td>{actionForm.type}</td></tr>
- <tr><th valign="top">Message</th><td colspan="3">Caught exception when evaluating expression "{actionForm.type}" with available binding contexts [actionForm, pageFlow, globalApp, request, session, application, pageContext, bundle, container, url, pageInput]. Root cause: java.lang.RuntimeException: Can not evaluate the identifier "type" on a null value object.</td></tr>
+ <tr><th valign="top">Message</th><td colspan="3">Caught exception when evaluating expression "{actionForm.type}" with available binding contexts [actionForm, pageFlow, globalApp, request, session, application, pageContext, bundle, container, url, pageInput]. Root cause: java.lang.RuntimeException: Can not evaluate the identifier "type" on a null object.</td></tr>
 </table></div>
 </body>
 
-</html>]]></ses:responseBody>
-         </ses:response>
-      </ses:test>
-   </ses:tests>
-   <ses:endDate>26 May 2005, 04:07:08.952 PM MDT</ses:endDate>
-   <ses:testCount>1</ses:testCount>
-</ses:recorderSession>
+</html>]]>
+</responseBody>
+</response>
+<testResults><testStatus>fail</testStatus>
+</testResults></test>
+</tests>
+<endDate>24 Mar 2006, 08:16:11.515 AM MST</endDate>
+<sessionStatus>fail</sessionStatus>
+<testCount>1</testCount>
+<passedCount>0</passedCount>
+<failedCount>1</failedCount>
+</recorderSession>