Author: dolander
Date: Sun Aug  1 14:23:43 2004
New Revision: 35548

Modified:
   
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Attribute.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatDate.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatNumber.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatString.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatTag.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Formattable.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Label.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/LabelBase.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Select.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/TextArea.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/TextBox.java
   
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/B18068.xml
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/B33322.xml
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DateFormatString.xml
Log:
Update the error reporting in the Format tags.
Errors are now reported both in-line and in the error summary.

There are two types of error reported, errors in setting attributes which are 
reported by
the format tags directly and formatting errors which occur during formatting 
and are reported
by the Formattable tag.

Update the Formattable interface to allow formatters to report errors
Report additional errors
Update a few error messages to indicate which tags are creating the errors.
Update tests for changes in the error messages

Review: Eddie




Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/datagrid/AbstractColumn.java
   Sun Aug  1 14:23:43 2004
@@ -90,6 +90,13 @@
     {
         getColumnModel().addFormatter(formatter);
     }
+    /**
+     * Indicate that a formatter has reported an error so the formatter should 
output it's
+     * body text.
+     */
+    public void formatterHasError() {
+        // @todo: need to implement this.
+    }
 
     public int doStartTag()
     {

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Attribute.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Attribute.java
       (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Attribute.java
       Sun Aug  1 14:23:43 2004
@@ -78,8 +78,9 @@
      * @netui.tldx:attribute
      */
     public void setName(String name)
+        throws JspException
     {
-        _name = name;
+        _name = setRequiredValueAttribute(name,"name");
     }
 
     /**
@@ -97,7 +98,7 @@
      */
     public void setValue(String value)
     {
-        _value = value;
+        _value =  setNonEmptyValueAttribute(value);
     }
 
     /**
@@ -107,8 +108,9 @@
      * @netui.tldx:attribute
      */
     public void setFacet(String facet)
+        throws JspException
     {
-        _facet = facet;
+        _facet = setRequiredValueAttribute(facet,"facet");
     }
 
     /**
@@ -117,6 +119,11 @@
      */
     public int doStartTag() throws JspException
     {
+        if (hasErrors()) {
+            reportErrors();
+            return SKIP_BODY;
+        }
+
         Tag tag = getParent();
         if (!(tag instanceof IAttributeConsumer)) {
             String s = Bundle.getString("Tags_AttributeInvalidParent");
@@ -128,6 +135,16 @@
         IAttributeConsumer ac = (IAttributeConsumer) tag;
         ac.setAttribute(_name, _value, _facet);
         return SKIP_BODY;
+    }
+
+    /**
+     * Does nothing but call the localRelease() method.
+     * @throws JspException if a JSP exception has occurred
+     */
+    public int doEndTag() throws JspException
+    {
+        localRelease();
+        return EVAL_PAGE;
     }
 
     protected void localRelease()

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatDate.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatDate.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatDate.java
      Sun Aug  1 14:23:43 2004
@@ -226,7 +226,7 @@
     /**
      * Set the pattern to use to convert a String value into a date.  This
      * will be used before the common formats.
-     * @param pattern the pattern representing the string input
+     * @param inputPattern the pattern representing the string input
      * @jsptagref.attributedescription
      * The pattern used to convert a String value into a date.
      * 
@@ -237,9 +237,10 @@
      * @netui:attribute required="false"  rtexprvalue="true"
      * @netui.tldx:attribute
      */
-    public void setStringInputPattern(String pattern)
+    public void setStringInputPattern(String inputPattern)
+        throws JspException
     {
-        _stringInput = pattern;
+        _stringInput = 
setRequiredValueAttribute(inputPattern,"stringInputPattern");
     }
 
     /**
@@ -248,21 +249,33 @@
      */
     public int doStartTag() throws JspException
     {
+        Tag parentTag = getParent();
+
+        // if there are errors we need to either add these to the parent 
AbstractBastTag or report an error.
         if (hasErrors()) {
+            if (parentTag instanceof Formattable) {
+                Formattable parent = (Formattable) parentTag;
+                parent.formatterHasError();
+            }
             reportErrors();
             localRelease();
-            return EVAL_PAGE;
+            return SKIP_BODY;
         }
 
-        Tag parentTag = getParent();
         if (parentTag instanceof Formattable) {
-            DateFormatter formatter = new DateFormatter();
-            formatter.setPattern(_pattern);
-            formatter.setLocale(getLocale());
-            formatter.setInputPattern(_stringInput);
             Formattable parent = (Formattable) parentTag;
-            parent.addFormatter(formatter);
+            DateFormatter dateFmt = new DateFormatter();
+            dateFmt.setPattern(_pattern);
+            dateFmt.setLocale(getLocale());
+            dateFmt.setInputPattern(_stringInput);
+            parent.addFormatter(dateFmt);
         }
+        else {
+            String s = Bundle.getString("Tags_FormattableParentRequired");
+            registerTagError(s,null);
+            reportErrors();
+        }
+
         localRelease();
         return SKIP_BODY;
     }
@@ -294,11 +307,18 @@
 
             SimpleDateFormat dateFormat = null;
             if (getPattern() != null) {
-                if (locale != null) {
-                    dateFormat = new SimpleDateFormat(getPattern(), locale);
+                try {
+                    if (locale != null) {
+                        dateFormat = new SimpleDateFormat(getPattern(), 
locale);
+                    }
+                    else {
+                        dateFormat = new SimpleDateFormat(getPattern());
+                    }
                 }
-                else {
-                    dateFormat = new SimpleDateFormat(getPattern());
+                catch (IllegalArgumentException e) {
+                    String s = 
Bundle.getString("Tags_DateFormatPatternException",new 
Object[]{e.getMessage()});
+                    logger.warn(s);
+                    throw new JspException(s);
                 }
             }
             else {
@@ -333,7 +353,7 @@
                     catch (IllegalArgumentException e) {
                         String s = 
Bundle.getString("Tags_formatDate_StringPatternError",
                                 new Object[]{inputPattern, e.getMessage()});
-                        logger.error(s);
+                        logger.warn(s);
                         throw new JspException(s);
                     }
 

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatNumber.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatNumber.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatNumber.java
    Sun Aug  1 14:23:43 2004
@@ -131,7 +131,7 @@
     /**
      * The type of number format to be used.
      */
-    protected String type;
+    protected String _type;
 
     /**
      * Return the name of the Tag.
@@ -141,16 +141,7 @@
         return "FormatNumber";
     }
 
-    /**
-     * Gets the type of number format to be used.
-     * @return the type.
-     */
-    public String getType()
-    {
-        return type;
-    }
-
-    /**
+   /**
      * Sets the type of number format to be used (number, currency, or 
percent).
      * @param type - the number format type.
      * @jsptagref.attributedescription
@@ -163,8 +154,15 @@
      * @netui:attribute required="false" rtexprvalue="true"
      */
     public void setType(String type)
+        throws JspException
     {
-        this.type = type;
+        _type = setRequiredValueAttribute(type,"type");
+        if (_type != null) {
+            if (!type.equals("number") && !type.equals("currency") && 
!type.equals("percent")) {
+                String s = Bundle.getString("Tags_NumberFormatWrongType");
+                registerTagError(s,null);
+            }
+        }
     }
 
     /**
@@ -173,21 +171,33 @@
      */
     public int doStartTag() throws JspException
     {
+        Tag parentTag = getParent();
+
+        // if there are errors we need to either add these to the parent 
AbstractBastTag or report an error.
         if (hasErrors()) {
+            if (parentTag instanceof Formattable) {
+                Formattable parent = (Formattable) parentTag;
+                parent.formatterHasError();
+            }
             reportErrors();
             localRelease();
-            return EVAL_PAGE;
+            return SKIP_BODY;
         }
 
-        Tag parentTag = getParent();
+        // if there are no errors then add this to the parent as a formatter.
         if (parentTag instanceof Formattable) {
             NumberFormatter formatter = new NumberFormatter();
             formatter.setPattern(_pattern);
-            formatter.setType(type);
+            formatter.setType(_type);
             formatter.setLocale(getLocale());
             Formattable parent = (Formattable) parentTag;
             parent.addFormatter(formatter);
         }
+        else {
+            String s = Bundle.getString("Tags_FormattableParentRequired");
+            registerTagError(s,null);
+            reportErrors();
+        }
         localRelease();
         return SKIP_BODY;
     }
@@ -198,7 +208,7 @@
     protected void localRelease()
     {
         super.localRelease();
-        type = null;
+        _type = null;
     }
 
     /**
@@ -227,6 +237,7 @@
             StringBuilder formattedString = new StringBuilder(32);
             DecimalFormat numberFormat = null;
 
+            // get the number format.  The type has been validated when it was 
set on the tag.
             if (locale == null) {
                 if ((type == null) || (type.equals("number"))) {
                     numberFormat = (DecimalFormat) 
java.text.NumberFormat.getNumberInstance();
@@ -238,7 +249,7 @@
                     numberFormat = (DecimalFormat) 
java.text.NumberFormat.getPercentInstance();
                 }
                 else {
-                    throw new 
JspException(Bundle.getString("Tags_NumberFormatWrongType"));
+                    assert(false) : "Invalid type was found:" + type;
                 }
             }
             else {
@@ -252,17 +263,20 @@
                     numberFormat = (DecimalFormat) 
java.text.NumberFormat.getPercentInstance(locale);
                 }
                 else {
-                    throw new 
JspException(Bundle.getString("Tags_NumberFormatWrongType"));
+                    assert(false) : "Invalid type was found:" + type;
                 }
             }
 
+            // format the number, apply the pattern specified
             try {
                 if (getPattern() != null)
                     numberFormat.applyPattern(getPattern());
             }
             catch (Exception e) {
-                throw new 
JspException(Bundle.getString("Tags_FormatException", e.getMessage()), e);
+                throw new 
JspException(Bundle.getString("Tags_NumberFormatPatternException", 
e.getMessage()), e);
             }
+
+            // parse the number
             if (dataToFormat.toString().length() == 0) {
                 return "";
             }
@@ -271,7 +285,7 @@
                 formattedString.append(numberFormat.format(number));
             }
             catch (Exception e) {
-                throw new 
JspException(Bundle.getString("Tags_FormatException", e.getMessage()), e);
+                throw new 
JspException(Bundle.getString("Tags_NumberFormatParseException", 
e.getMessage()), e);
             }
 
             return formattedString.toString();

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatString.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatString.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatString.java
    Sun Aug  1 14:23:43 2004
@@ -18,6 +18,8 @@
  */
 package org.apache.beehive.netui.tags.html;
 
+import org.apache.beehive.netui.util.Bundle;
+
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.tagext.Tag;
 
@@ -149,13 +151,19 @@
      */
     public int doStartTag() throws JspException
     {
+        Tag parentTag = getParent();
+
+        // if there are errors we need to either add these to the parent 
AbstractBastTag or report an error.
         if (hasErrors()) {
+            if (parentTag instanceof Formattable) {
+                Formattable parent = (Formattable) parentTag;
+                parent.formatterHasError();
+            }
             reportErrors();
             localRelease();
-            return EVAL_PAGE;
+            return SKIP_BODY;
         }
 
-        Tag parentTag = getParent();
         if (parentTag instanceof Formattable) {
             StringFormatter formatter = new StringFormatter();
             formatter.setPattern(_pattern);
@@ -163,6 +171,12 @@
             Formattable parent = (Formattable) parentTag;
             parent.addFormatter(formatter);
         }
+        else {
+            String s = Bundle.getString("Tags_FormattableParentRequired");
+            registerTagError(s,null);
+            reportErrors();
+        }
+
         localRelease();
         return SKIP_BODY;
     }
@@ -267,9 +281,7 @@
                     patternIndex++;
                 }
             }
-
             return formattedString.toString();
-
         }
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatTag.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatTag.java
       (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/FormatTag.java
       Sun Aug  1 14:23:43 2004
@@ -23,7 +23,6 @@
 import org.apache.beehive.netui.util.logging.Logger;
 
 import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.Tag;
 import java.util.Locale;
 
 /**
@@ -45,7 +44,7 @@
      */
     public void setLanguage(String language)
     {
-        _language = language;
+        _language = setNonEmptyValueAttribute(language);
     }
 
     /**
@@ -55,7 +54,7 @@
      */
     public void setCountry(String country)
     {
-        _country = country;
+        _country = setNonEmptyValueAttribute(country);
     }
 
     /**
@@ -63,14 +62,15 @@
      * @return the locale
      */
     public Locale getLocale()
+        throws JspException
     {
         Locale loc = null;
         if (_language != null || _country != null) {
             // language is required
             if (_language == null) {
-                String s = Bundle.getString("Tags_LocaleRequiresLanguage",
-                        new Object[]{_country});
-                logger.error(s);
+                String s = Bundle.getString("Tags_LocaleRequiresLanguage",new 
Object[]{_country});
+                registerTagError(s,null);
+                logger.warn(s);
                 return super.getUserLocale();
             }
 
@@ -94,16 +94,14 @@
     public void setPattern(String pattern)
             throws JspException
     {
-        if ((pattern == null) || (pattern.length() == 0)) {
-            registerTagError(Bundle.getString("Tags_NoFormatPattern"), null);
-        }
-        _pattern = pattern;
+        _pattern = setRequiredValueAttribute(pattern,"patttern");
     }
 
     /**
      * Create the internal Formatter instance and perform the formatting.
      * @throws JspException if a JSP exception has occurred
      */
+    /*
     public int doStartTag() throws JspException
     {
         Tag parentTag = getParent();
@@ -116,6 +114,7 @@
         localRelease();
         return SKIP_BODY;
     }
+    */
 
     /**
      * Release any acquired resources.
@@ -131,7 +130,7 @@
     /**
      * Internal FormatTag.Formatter which performs the actual formatting.
      */
-    public static class Formatter
+    public abstract static class Formatter
     {
         private String pattern;
 
@@ -153,6 +152,15 @@
             else
                 return dataToFormat.toString();
         }
-    }
 
+        public boolean hasError()
+        {
+            return false;
+        }
+
+        public String getErrorMessage()
+        {
+            return null;
+        }
+    }
 }

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Formattable.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Formattable.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Formattable.java
     Sun Aug  1 14:23:43 2004
@@ -18,8 +18,6 @@
  */
 package org.apache.beehive.netui.tags.html;
 
-// @todo: rename to IFormattable
-
 /**
  * Interface that indicates whether or not a tag's output can be formatted 
with by a <code>FormatTag</code>.
  */
@@ -30,4 +28,10 @@
      * @param formatter - the formatter instance to add to the Formattable 
tag's set of formatters.
      */
     public void addFormatter(FormatTag.Formatter formatter);
+
+    /**
+     * Indicate that a formatter has reported an error so the formattable 
needs to make sure that
+     * the body content is output so the placement of the error is visible in 
the page.
+     */
+    public void formatterHasError();
 }

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Label.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Label.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Label.java
   Sun Aug  1 14:23:43 2004
@@ -211,6 +211,15 @@
 
         br.doEndTag(results);
 
+        // if there were errors in the formatters, report them.
+        if (_formatterErrors) {
+            if (bodyContent != null) {
+                String value = bodyContent.getString().trim();
+                bodyContent.clearBody();
+                write(value);
+            }
+        }
+
         if (hasErrors()) {
             reportErrors();
             localRelease();

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/LabelBase.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/LabelBase.java
       (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/LabelBase.java
       Sun Aug  1 14:23:43 2004
@@ -34,7 +34,8 @@
     protected Object _defaultValue;               // The attribute value of 
the defaultValue attribute
     protected Object _value;                      // The text of the Label.
     protected boolean _escapeWhiteSpace = true;   // escape white space flag
-    private ArrayList _formatters;              // The formatters
+    protected boolean _formatterErrors = false;  // The formatter has errors.
+    private ArrayList _formatters;               // The formatters
 
     /**
      * Set the default value of this Label.
@@ -89,6 +90,14 @@
     }
 
     /**
+     * Indicate that a formatter has reported an error so the formatter should 
output it's
+     * body text.
+     */
+    public void formatterHasError() {
+        _formatterErrors = true;
+    }
+
+    /**
      * Filter the specified string for characters that are senstive to
      * HTML interpreters, returning the string with these characters replaced
      * by the corresponding character entities.
@@ -114,6 +123,7 @@
         _defaultValue = null;
         _escapeWhiteSpace = true;
         _formatters = null;
+        _formatterErrors = false;
         _value = null;
     }
 
@@ -123,19 +133,39 @@
     protected String formatText(Object text)
             throws JspException
     {
+        StringBuilder errors = null;
         if (text == null)
             return null;
+
         if (_formatters == null)
             return text.toString();
 
         for (int i = 0; i < _formatters.size(); i++) {
             FormatTag.Formatter currentFormatter = (FormatTag.Formatter) 
_formatters.get(i);
+
+            // if there are errors in the formatter, we need to report them
+            // and continue to the next one.
+            if (currentFormatter.hasError()) {
+                if (errors == null) {
+                    errors = new StringBuilder(32);
+                }
+                assert(errors != null);
+                errors.append(currentFormatter.getErrorMessage());
+                continue;
+            }
+
+            // apply the formatter.
             try {
                 text = currentFormatter.format(text);
             }
             catch (JspException e) {
                 registerTagError(e.getMessage(), e);
             }
+        }
+        // if there were errors we will return the errors followed by the text,
+        // otherwise just return the text.
+        if (errors != null) {
+            return errors.toString() + text.toString();
         }
         return text.toString();
     }

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Select.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Select.java
  (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Select.java
  Sun Aug  1 14:23:43 2004
@@ -20,7 +20,6 @@
 
 import org.apache.beehive.netui.pageflow.ProcessPopulate;
 import org.apache.beehive.netui.pageflow.RequestParameterHandler;
-import org.apache.beehive.netui.script.common.DataAccessProviderBean;
 import org.apache.beehive.netui.script.common.IDataAccessProvider;
 import org.apache.beehive.netui.script.common.DataAccessProviderStack;
 import org.apache.beehive.netui.tags.naming.FormDataNameInterceptor;
@@ -213,6 +212,7 @@
     private SelectTag.State _state = new SelectTag.State();
     private OptionTag.State _optionState = new OptionTag.State();
     private InputHiddenTag.State _hiddenState = new InputHiddenTag.State();
+    private boolean _formatterError = false;
 
     /**
      * Default value of the options <code>value</code> attribute.
@@ -757,6 +757,11 @@
         String scriptId = null;
         ServletRequest req = pageContext.getRequest();
 
+        String fmtErrors = null;
+        if (_formatterError) {
+            fmtErrors = getErrorsFromBody();
+        }
+
         if (hasErrors()) {
             reportErrors();
             localRelease();
@@ -787,6 +792,10 @@
             results.append("\n");
         }
 
+        // Render any formatting errors that may have occurred.
+        if (fmtErrors != null)
+            results.append(fmtErrors);
+
         // Create an appropriate "form" element based on our parameters
         _state.name = realName;
         scriptId = renderTagId(_state, realName, false, true);
@@ -794,9 +803,10 @@
         TagRenderingBase br = 
TagRenderingBase.Factory.getRendering(TagRenderingBase.SELECT_TAG, req);
         br.doStartTag(results, _state);
 
-        // Render a tag representing the end of our current form
-        if (_saveBody != null)
+        // Render the content of the body, these would be the options
+        if (_saveBody != null)  {
             results.append(_saveBody);
+        }
 
         // if we are repeating then the body contained the options so we can 
exit here
         if (_repeater) {
@@ -896,6 +906,49 @@
         _repCurItem = null;
         _repCurStage = 0;
         _dynamicOptions = null;
+        _formatterError = false;
+    }
+
+    private String getErrorsFromBody()
+    {
+        final String END_TOKEN = "</span>";
+        assert(_saveBody != null);
+        StringBuilder body = new StringBuilder(_saveBody.length());
+        StringBuilder error = new StringBuilder(_saveBody.length());
+
+        // pull out all of the spans  These should be legally constructed, 
otherwise we will ignore them.
+        int len = _saveBody.length();
+        int pos = 0;
+        while (pos < len) {
+
+            // find the start of a span, if we dont' find one then it's 
over....
+            int start = _saveBody.indexOf("<span",pos);
+            if (start == -1)
+               break;
+
+            // if we don't find the end of the <span> then we don't have a 
legal span so ignore it
+            int end = _saveBody.indexOf(END_TOKEN);
+            if (end == -1)
+                break;
+
+            // copy the pos to start into the body
+            int realEnd = end + END_TOKEN.length() + 1;
+            body.append(_saveBody.substring(pos,start));
+            error.append(_saveBody.substring(start,realEnd));
+            System.err.println("Body:" + body);
+            System.err.println("Error:" + error);
+            pos = realEnd;
+        }
+
+        // recreate the remainder of the body, everything not left
+        body.append(_saveBody.substring(pos,len));
+        _saveBody = body.toString();
+
+        System.err.println("Body:" + body);
+        System.err.println("Error:" + error);
+
+        // return the error
+        return error.toString();
     }
 
     private boolean doRepeaterAfterBody()
@@ -1120,6 +1173,14 @@
     public void addFormatter(FormatTag.Formatter formatter)
     {
         _formatters.add(formatter);
+    }
+
+    /**
+     * Indicate that a formatter has reported an error so the formatter should 
output it's
+     * body text.
+     */
+    public void formatterHasError() {
+        _formatterError = true;
     }
 
     /**

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/TextArea.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/TextArea.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/TextArea.java
        Sun Aug  1 14:23:43 2004
@@ -80,6 +80,7 @@
     private TextAreaTag.State _state = new TextAreaTag.State();
 
     private ArrayList _formatters = null;
+    private boolean _formatErrors = false;
 
     /**
      * Return the name of the Tag.
@@ -224,6 +225,15 @@
         // Buffer to write the results
         StringBuilder results = new StringBuilder(64);
 
+        // if there were format errors then report them
+        if (_formatErrors) {
+            if (bodyContent != null) {
+                String value = bodyContent.getString().trim();
+                bodyContent.clearBody();
+                write(value);
+            }
+        }
+
         // create the input tag.
         TagRenderingBase br = 
TagRenderingBase.Factory.getRendering(TagRenderingBase.TEXT_AREA_TAG, req);
         br.doStartTag(results, _state);
@@ -268,6 +278,7 @@
 
         _state.clear();
         _formatters = null;
+        _formatErrors = false;
     }
 
     /**
@@ -280,6 +291,14 @@
             _formatters = new ArrayList();
 
         _formatters.add(formatter);
+    }
+    
+    /**
+     * Indicate that a formatter has reported an error so the formatter should 
output it's
+     * body text.
+     */
+    public void formatterHasError() {
+        _formatErrors = true;
     }
 
     /**

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/TextBox.java
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/TextBox.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/TextBox.java
 Sun Aug  1 14:23:43 2004
@@ -84,6 +84,7 @@
 
     private ArrayList _formatters;
     private boolean _password = false;
+    private boolean _formatErrors = false;
 
     /**
      * Return the name of the Tag.
@@ -300,6 +301,7 @@
             _state.type = INPUT_TEXT;
         }
 
+
         // Create the state for the input tag
         _state.name = doNaming();
         scriptId = renderTagId(_state, _state.name, false, true);
@@ -321,6 +323,15 @@
 
         StringBuilder results = new StringBuilder(256);
 
+        // if there were format errors then report them
+        if (_formatErrors) {
+            if (bodyContent != null) {
+                String value = bodyContent.getString().trim();
+                bodyContent.clearBody();
+                write(value);
+            }
+        }
+
         // create the input tag.
         TagRenderingBase br = 
TagRenderingBase.Factory.getRendering(TagRenderingBase.INPUT_TEXT_TAG, req);
         assert(br != null);
@@ -353,6 +364,7 @@
 
         _formatters = null;
         _password = false;
+        _formatErrors = false;
     }
 
     /**
@@ -365,6 +377,14 @@
             _formatters = new ArrayList();
 
         _formatters.add(formatter);
+    }
+
+    /**
+     * Indicate that a formatter has reported an error so the formatter should 
output it's
+     * body text.
+     */
+    public void formatterHasError() {
+        _formatErrors = true;
     }
 
     /**

Modified: 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties
==============================================================================
--- 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties
       (original)
+++ 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties
       Sun Aug  1 14:23:43 2004
@@ -48,6 +48,12 @@
 Tags_NumberFormatWrongType=The NumberFormat type must be "number", "currency", 
or "percent".
 Tags_NoFormatPattern=The pattern of the Format must not be null or an empty 
string.
 Tags_FormatException=FormatError while formatting: {0}.
+Tags_NumberFormatPatternException=FormatNumber error applying pattern: {0}
+Tags_NumberFormatParseException=FormatNumber error parsing input: {0}
+Tags_DateFormatPatternException=FormatDate error creating SimpleDateFormat: {0}
+Tags_formatDate_String_Error=The String "{0}" is not in an understood date 
format.
+Tags_formatDate_StringPatternError=FormatDate error, the stringInputPattern 
"{0}" is invalid.  IllegalArgumentException: {1}
+Tags_FormattableParentRequired=Format tags require a parent that is 
Formattable.
 Tags_EmptyStringFormatException=The value to be formatted by the FormatNumber 
cannot be an empty string or null.
 Tags_BadParameterType=Parameter {0} cannot be a Map.
 Tags_MalformedURLException=MalformedURLException occured.
@@ -86,8 +92,6 @@
 Tags_Form_URLException=The action ''{0}'' for the Form is malformed: {1}
 Tags_Anchor_InvalidAnchorURI=The Anchor URI is invalid; it must be exactly one 
of {0}
 Tags_HRefEvalNull=The href expression "{0}" resolved to null.
-Tags_formatDate_String_Error=The String "{0}" is not in an understood date 
format.
-Tags_formatDate_StringPatternError=The stringInputPattern "{0}" is invalid.  
IllegalArgumentException: {1}
 Tags_formatDate_Type_Error=The type "{0}" may not be formatted by a formatDate 
tag.
 Tags_LocaleRequiresLanguage=If you set a country, you must also set a language 
when specifying a local, defaulting to Locale of Request.  The country set was 
"{0}"
 Tags_ErrorsException=An error occurred accessing the message bundle.  This may 
be because the message-resource is not defined within the page flow.  The 
error: {0}

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/B18068.xml
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/B18068.xml    
    (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/B18068.xml    
    Sun Aug  1 14:23:43 2004
@@ -1,92 +1,64 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
-<recorderSession 
xmlns="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
-
-  <sessionName>B18068</sessionName>
-  <tester>Daryl</tester>
-  <startDate>20 Mar 2004, 10:04:06.235 AM MST</startDate>
-  <description>Verify that the FormatNumber tag validates the 
type.</description>
-
-  <tests>
-  <test>
-    <testNumber>1</testNumber>
-
-    <request>
-
-      <protocol>HTTP</protocol>
-      <protocolVersion>1.1</protocolVersion>
-      <host>localhost</host>
-      <port>7001</port>
-      <uri>/coreWeb/bugs/b18068/Controller.jpf</uri>
-      <method>GET</method>
-
-      <parameters>
-      </parameters>
-
-      <cookies>
-        <cookie>
-          <name>JSESSIONID</name>
-          
<value>Ac57ASvcUXbpM1mkSuSWUV2tcRVXqdQeXntxBB3pdPjGAh0kqwyr!-1017168403</value>
-        </cookie>
-      </cookies>
-
-      <headers>
-        <header>
-          <name>Accept</name>
-          <value>image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, 
application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, 
*/*</value>
-        </header>
-        <header>
-          <name>Accept-Encoding</name>
-          <value>gzip, deflate, x-gzip, compress, x-compress</value>
-        </header>
-        <header>
-          <name>Accept-Language</name>
-          <value>en-us</value>
-        </header>
-        <header>
-          <name>Connection</name>
-          <value>Keep-Alive, TE</value>
-        </header>
-        <header>
-          <name>Cookie</name>
-          
<value>JSESSIONID=Ac57ASvcUXbpM1mkSuSWUV2tcRVXqdQeXntxBB3pdPjGAh0kqwyr!-1017168403</value>
-        </header>
-        <header>
-          <name>Cookie2</name>
-          <value>$Version="1"</value>
-        </header>
-        <header>
-          <name>Host</name>
-          <value>localhost:7001</value>
-        </header>
-        <header>
-          <name>TE</name>
-          <value>trailers, deflate, gzip, compress</value>
-        </header>
-        <header>
-          <name>User-Agent</name>
-          <value>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) 
RPT-HTTPClient/0.3-3E</value>
-        </header>
-        <header>
-          <name>testRecorder.playback.failMode</name>
-          <value>stop</value>
-        </header>
-        <header>
-          <name>testRecorder.playback.testID</name>
-          <value>-189e36e1:fb692b5d8a:-791b</value>
-        </header>
-        <header>
-          <name>testRecorder.playback.testNumber</name>
-          <value>1</value>
-        </header>
-      </headers>
-
-    </request>
-
-    <response>
-      <statusCode>200</statusCode>
-      <reason></reason>
-      <responseBody><![CDATA[<html>
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>B18068</ses:sessionName>
+   <ses:tester>Daryl</ses:tester>
+   <ses:startDate>01 Aug 2004, 01:47:52.672 PM MDT</ses:startDate>
+   <ses:description>Daryl</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/bugs/b18068/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies/>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>image/gif, image/x-xbitmap, image/jpeg, 
image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, 
application/msword, */*</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip, deflate, x-gzip, compress, 
x-compress</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>Keep-Alive, TE</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie2</ses:name>
+                  <ses:value>$Version="1"</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>te</ses:name>
+                  <ses:value>trailers, deflate, gzip, compress</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>testrecorder.playback.testid</ses:name>
+                  <ses:value>-70d743c2:fe1b2e3bb5:-78a2</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 
5.0) RPT-HTTPClient/0.3-3E</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<html>
 <head>
 <title>Format Error</title>
 </head>
@@ -94,27 +66,21 @@
 <h4>Format Error -- Should report an error for an invalid type</h4>
 <span> <table border="1" cellspacing="0" 
style="color:red;background-color:white">
  <tr><th colspan="5">Tag Error</th></tr>
- <tr><th>Tag</th><td>Label</td>
+ <tr><th>Tag</th><td>FormatNumber</td>
  <th>Errors</th><td colspan="2">1</td></tr>
  <tr><th>Tag Error</th><th>Message</th><td colspan="3">The NumberFormat type 
must be "number", "currency", or "percent".</td></tr>
-</table></span>
-
+</table></span><span>12345.67</span>
 </body>
-</html>]]></responseBody>
-
-    </response>
-
-    <testResults>
-      <testStatus>fail</testStatus>
-
-    </testResults>
-  </test>
-
-  </tests>
-
-  <endDate>20 Mar 2004, 10:04:07.497 AM MST</endDate>
-  <sessionStatus>fail</sessionStatus>
-  <testCount>1</testCount>
-  <passedCount>0</passedCount>
-  <failedCount>1</failedCount>
-</recorderSession>
\ No newline at end of file
+</html>]]></ses:responseBody>
+         </ses:response>
+         <ses:testResults>
+            <ses:testStatus>fail</ses:testStatus>
+         </ses:testResults>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>01 Aug 2004, 01:47:54.174 PM MDT</ses:endDate>
+   <ses:sessionStatus>fail</ses:sessionStatus>
+   <ses:testCount>1</ses:testCount>
+   <ses:passedCount>0</ses:passedCount>
+   <ses:failedCount>1</ses:failedCount>
+</ses:recorderSession>

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/B33322.xml
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/B33322.xml    
    (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/B33322.xml    
    Sun Aug  1 14:23:43 2004
@@ -1,92 +1,64 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
-<recorderSession 
xmlns="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
-
-  <sessionName>B33322</sessionName>
-  <tester>Daryl</tester>
-  <startDate>26 Mar 2004, 02:40:00.958 PM MST</startDate>
-  <description>Error Reporting in the NumberFormatter</description>
-
-  <tests>
-  <test>
-    <testNumber>1</testNumber>
-
-    <request>
-
-      <protocol>HTTP</protocol>
-      <protocolVersion>1.1</protocolVersion>
-      <host>localhost</host>
-      <port>7001</port>
-      <uri>/coreWeb/bugs/b33322/Controller.jpf</uri>
-      <method>GET</method>
-
-      <parameters>
-      </parameters>
-
-      <cookies>
-        <cookie>
-          <name>JSESSIONID</name>
-          
<value>AkiXWtFW8FZqscp1vxbYvVXblDcKjhcMJsDLQQNhnAns9wKYsquu!601497888</value>
-        </cookie>
-      </cookies>
-
-      <headers>
-        <header>
-          <name>Accept</name>
-          <value>image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, 
application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, 
*/*</value>
-        </header>
-        <header>
-          <name>Accept-Encoding</name>
-          <value>gzip, deflate, x-gzip, compress, x-compress</value>
-        </header>
-        <header>
-          <name>Accept-Language</name>
-          <value>en-us</value>
-        </header>
-        <header>
-          <name>Connection</name>
-          <value>Keep-Alive, TE</value>
-        </header>
-        <header>
-          <name>Cookie</name>
-          
<value>JSESSIONID=AkiXWtFW8FZqscp1vxbYvVXblDcKjhcMJsDLQQNhnAns9wKYsquu!601497888</value>
-        </header>
-        <header>
-          <name>Cookie2</name>
-          <value>$Version="1"</value>
-        </header>
-        <header>
-          <name>Host</name>
-          <value>localhost:7001</value>
-        </header>
-        <header>
-          <name>TE</name>
-          <value>trailers, deflate, gzip, compress</value>
-        </header>
-        <header>
-          <name>User-Agent</name>
-          <value>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) 
RPT-HTTPClient/0.3-3E RPT-HTTPClient/0.3-3E RPT-HTTPClient/0.3-3E 
RPT-HTTPClient/0.3-3E RPT-HTTPClient/0.3-3E</value>
-        </header>
-        <header>
-          <name>testRecorder.playback.failMode</name>
-          <value>stop</value>
-        </header>
-        <header>
-          <name>testRecorder.playback.testID</name>
-          <value>-67265aa3:fb89054f29:-78ed</value>
-        </header>
-        <header>
-          <name>testRecorder.playback.testNumber</name>
-          <value>1</value>
-        </header>
-      </headers>
-
-    </request>
-
-    <response>
-      <statusCode>200</statusCode>
-      <reason></reason>
-      <responseBody><![CDATA[<!--Generated by WebLogic Workshop-->
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>B33322</ses:sessionName>
+   <ses:tester>Daryl</ses:tester>
+   <ses:startDate>01 Aug 2004, 01:48:20.542 PM MDT</ses:startDate>
+   <ses:description>Daryl</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/bugs/b33322/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies/>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>image/gif, image/x-xbitmap, image/jpeg, 
image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, 
application/msword, */*</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip, deflate, x-gzip, compress, 
x-compress</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>Keep-Alive, TE</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie2</ses:name>
+                  <ses:value>$Version="1"</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>te</ses:name>
+                  <ses:value>trailers, deflate, gzip, compress</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>testrecorder.playback.testid</ses:name>
+                  <ses:value>-70d743c2:fe1b2e3bb5:-7892</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 
5.0) RPT-HTTPClient/0.3-3E RPT-HTTPClient/0.3-3E RPT-HTTPClient/0.3-3E 
RPT-HTTPClient/0.3-3E RPT-HTTPClient/0.3-3E</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!--Generated by WebLogic Workshop-->
 
 
 
@@ -105,24 +77,19 @@
     <div> <hr /><table border="1" cellspacing="0" 
style="color:red;background-color:white">
  <tr><th colspan="6">Page Errors</th></tr>
  <tr><th>Error Number</th><th>Tag Type</th><th colspan="4">Error</th></tr>
-<tr><th>1</th><th>Label</th><th>Message</th><td>FormatError while formatting: 
Multiple decimal separators in pattern "999.00.999".</td></tr>
+<tr><th>1</th><th>Label</th><th>Message</th><td>FormatNumber error applying 
pattern: Multiple decimal separators in pattern "999.00.999"</td></tr>
 </table></div>
 </body>
-</html>]]></responseBody>
-
-    </response>
-
-    <testResults>
-      <testStatus>fail</testStatus>
-
-    </testResults>
-  </test>
-
-  </tests>
-
-  <endDate>26 Mar 2004, 02:40:03.041 PM MST</endDate>
-  <sessionStatus>fail</sessionStatus>
-  <testCount>1</testCount>
-  <passedCount>0</passedCount>
-  <failedCount>1</failedCount>
-</recorderSession>
\ No newline at end of file
+</html>]]></ses:responseBody>
+         </ses:response>
+         <ses:testResults>
+            <ses:testStatus>fail</ses:testStatus>
+         </ses:testResults>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>01 Aug 2004, 01:48:22.134 PM MDT</ses:endDate>
+   <ses:sessionStatus>fail</ses:sessionStatus>
+   <ses:testCount>1</ses:testCount>
+   <ses:passedCount>0</ses:passedCount>
+   <ses:failedCount>1</ses:failedCount>
+</ses:recorderSession>

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DateFormatString.xml
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DateFormatString.xml
      (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/DateFormatString.xml
      Sun Aug  1 14:23:43 2004
@@ -2,7 +2,7 @@
 <ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
    <ses:sessionName>DateFormatString</ses:sessionName>
    <ses:tester>Daryl</ses:tester>
-   <ses:startDate>05 Jul 2004, 08:07:10.411 PM MDT</ses:startDate>
+   <ses:startDate>01 Aug 2004, 01:52:06.547 PM MDT</ses:startDate>
    <ses:description>Daryl</ses:description>
    <ses:tests>
       <ses:test>
@@ -15,12 +15,7 @@
             <ses:uri>/coreWeb/tags/dateFormatString/Controller.jpf</ses:uri>
             <ses:method>GET</ses:method>
             <ses:parameters/>
-            <ses:cookies>
-               <ses:cookie>
-                  <ses:name>JSESSIONID</ses:name>
-                  <ses:value>FD8DC702CA2580B8DF8DF160785F2C23</ses:value>
-               </ses:cookie>
-            </ses:cookies>
+            <ses:cookies/>
             <ses:headers>
                <ses:header>
                   <ses:name>accept</ses:name>
@@ -39,10 +34,6 @@
                   <ses:value>Keep-Alive, TE</ses:value>
                </ses:header>
                <ses:header>
-                  <ses:name>cookie</ses:name>
-                  
<ses:value>JSESSIONID=FD8DC702CA2580B8DF8DF160785F2C23</ses:value>
-               </ses:header>
-               <ses:header>
                   <ses:name>cookie2</ses:name>
                   <ses:value>$Version="1"</ses:value>
                </ses:header>
@@ -56,7 +47,7 @@
                </ses:header>
                <ses:header>
                   <ses:name>testrecorder.playback.testid</ses:name>
-                  <ses:value>729233a0:fd9231710a:-7d40</ses:value>
+                  <ses:value>-70d743c2:fe1b2e3bb5:-776f</ses:value>
                </ses:header>
                <ses:header>
                   <ses:name>testrecorder.playback.testnumber</ses:name>
@@ -103,7 +94,7 @@
     <div> <hr /><table border="1" cellspacing="0" 
style="color:red;background-color:white">
  <tr><th colspan="6">Page Errors</th></tr>
  <tr><th>Error Number</th><th>Tag Type</th><th colspan="4">Error</th></tr>
-<tr><th>1</th><th>Label</th><th>Message</th><td>The stringInputPattern 
"yy.MN.dd" is invalid.  IllegalArgumentException: Illegal pattern character 
'N'</td></tr>
+<tr><th>1</th><th>Label</th><th>Message</th><td>FormatDate error, the 
stringInputPattern "yy.MN.dd" is invalid.  IllegalArgumentException: Illegal 
pattern character 'N'</td></tr>
 <tr><th>2</th><th>Label</th><th>Message</th><td>The String "2003.10.25" is not 
in an understood date format.</td></tr>
 </table></div>
 </body>
@@ -114,7 +105,7 @@
          </ses:testResults>
       </ses:test>
    </ses:tests>
-   <ses:endDate>05 Jul 2004, 08:07:11.853 PM MDT</ses:endDate>
+   <ses:endDate>01 Aug 2004, 01:52:08.129 PM MDT</ses:endDate>
    <ses:sessionStatus>fail</ses:sessionStatus>
    <ses:testCount>1</ses:testCount>
    <ses:passedCount>0</ses:passedCount>

Reply via email to