You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by do...@apache.org on 2004/07/25 19:41:27 UTC

svn commit: rev 23236 - in incubator/beehive/trunk/netui/src: tags-databinding/org/apache/beehive/netui/tags/databinding/repeater tags-html/org/apache/beehive/netui/tags tags-html/org/apache/beehive/netui/tags/html tags-html/org/apache/beehive/netui/tags/rendering tags-html/org/apache/beehive/netui/tags/tree tags-template/org/apache/beehive/netui/tags/template util/org/apache/beehive/netui/util

Author: dolander
Date: Sun Jul 25 10:41:26 2004
New Revision: 23236

Modified:
   incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/Repeater.java
   incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/HtmlUtils.java
   incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/HtmlDataSourceTag.java
   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/rendering/AnchorTag.java
   incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/TagHtmlBase.java
   incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/TagRenderingBase.java
   incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
   incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Attribute.java
   incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/IncludeSection.java
   incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Section.java
   incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Template.java
   incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/netui.properties
Log:
Several updates to the tags:
1) I addressed a bunch of todo's inside the templates.  Mostly adding error reporting
2) I cleaned up a bogus assert in the repeater
3) I cleaned up the TextBox.  
	Removed writting out a value when both the datasource and defaultValue were null.
	Cleaned up a bogus assert.
4) Added the ability to output attributes with single quotes
5) Fixed the tree so that the anchors render javascript with single quotes.

This is the source code checkin.  The next checkin will update the tests results.

CR: Eddie
	




Modified: incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/Repeater.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/Repeater.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/repeater/Repeater.java	Sun Jul 25 10:41:26 2004
@@ -19,25 +19,19 @@
 package org.apache.beehive.netui.tags.databinding.repeater;
 
 // java imports
-import java.util.Iterator;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.TryCatchFinally;
-
-// internal imports
-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.script.common.IDataAccessProvider;
 import org.apache.beehive.netui.tags.DataSourceTag;
-
 import org.apache.beehive.netui.tags.databinding.repeater.pad.PadContext;
-
 import org.apache.beehive.netui.util.Bundle;
 import org.apache.beehive.netui.util.exception.LocalizedUnsupportedOperationException;
 import org.apache.beehive.netui.util.iterator.IteratorFactory;
-import org.apache.beehive.netui.util.iterator.IteratorFactoryException;
 import org.apache.beehive.netui.util.logging.Logger;
 
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TryCatchFinally;
+import java.util.Iterator;
+
 // external imports
 
 /**
@@ -109,17 +103,9 @@
  * <tr><td>{@link RepeaterHeader}</td><td>Renders once at the start of the iteration.</td></tr>
  * <tr><td>{@link RepeaterItem}</td><td>Renders once for each iteration.</td></tr>
  * <tr><td>{@link RepeaterFooter}</td><td>Renders once at the end of the iteration.</td></tr>
- * <tr><td>{@link com.bea.wlw.netui.tags.databinding.repeater.pad.Pad}</td><td>Used to convert 
+ * <tr><td>{@link org.apache.beehive.netui.tags.databinding.repeater.pad.Pad}</td><td>Used to convert
  *          irregular data sets into regular data sets through padding 
  *          or truncating the output.</td></tr>
- * <tr><td>{@link com.bea.wlw.netui.tags.databinding.repeater.choice.Choice}</td><td>Used to 
- *          conditionally render data in the data set based on the result 
- *          of calling a decision 
- *          method. 
- *          This is allowed only within the &lt;netui-data:repeaterItem> tag.</td></tr>
- * <tr><td>{@link com.bea.wlw.netui.tags.databinding.repeater.choice.ChoiceMethod}</td><td>Used 
- *          to define the decision method used when conditionally rendering data.
- *          This is allowed only within the &lt;netui-data:repeaterItem> tag.</td></tr>
  * </table>
  * </blockquote>
  * 
@@ -617,7 +603,9 @@
         
         if(_renderState == HEADER)
         {
-            assert _currentIndex == 0;
+            // This assert is invalid because adanceToNonNullItem is called in the
+            // doStartTag() method and may move the _currentIndex beyond 0
+            //assert (_currentIndex == 0) : "Unexpected index value:" + _currentIndex;
             assert _renderedItems == 0;
 
             // this would only happen if Pad.maxRepeat == 0

Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/HtmlUtils.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/HtmlUtils.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/HtmlUtils.java	Sun Jul 25 10:41:26 2004
@@ -56,10 +56,11 @@
      */
     public static String filter(String value, boolean markupHTMLSpaceReturn)
     {
-
+        // if the value is null, return
         if (value == null)
             return null;
 
+        // convert the string
         boolean needsToChange = false;
         int numChars = value.length();
         char c;

Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/HtmlDataSourceTag.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/HtmlDataSourceTag.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/HtmlDataSourceTag.java	Sun Jul 25 10:41:26 2004
@@ -72,7 +72,6 @@
         String ds = ensureValidExpression(datasource, "dataSource", "DataSourceError");
         if (ds == null)
             return null;
-        //setDataSource(ds);
 
         // have a valid expression
         return evaluateExpression(datasource, "dataSource");

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 Jul 25 10:41:26 2004
@@ -142,6 +142,8 @@
         super.setAttribute(name, value, facet);
     }
 
+    //********************************  ATTRIBUTES *******************************
+
     /**
      * Set the maximum length (in characters) of the TextBox.
      * @param maxlength - the max length
@@ -211,6 +213,66 @@
     {
         _state.size = size;
     }
+    /**
+     * Sets the accessKey attribute value.  This should key value of the
+     * keyboard navigation key.  It is recommended not to use the following
+     * values because there are often used by browsers <code>A, C, E, F, G,
+     * H, V, left arrow, and right arrow</code>.
+     * @param accessKey - the accessKey value.
+     * @jsptagref.attributedescription
+     * The keyboard navigation key for the element.
+     * The following values are not recommended because they
+     * are often used by browsers: <code>A, C, E, F, G,
+     * H, V, left arrow, and right arrow</code>
+     *
+     * @jsptagref.databindable false
+     *
+     * @jsptagref.attributesyntaxvalue <i>string_accessKey</i>
+     *
+     * @netui:attribute required="false" rtexprvalue="true" type="char"
+     */
+    public void setAccessKey(char accessKey)
+    {
+        _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ACCESSKEY, Character.toString(accessKey));
+    }
+
+    /**
+     * Sets the alt attribute value.
+     * @param alt - the alt value.
+     * @jsptagref.attributedescription
+     * The alt attribute of the element.
+     *
+     * @jsptagref.databindable Read Only
+     *
+     * @jsptagref.attributesyntaxvalue <i>string_alt</i>
+     *
+     * @netui:attribute required="false"  rtexprvalue="true"
+     */
+    public void setAlt(String alt)
+    {
+        _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ALT, alt);
+    }
+
+    /**
+     * Sets the tabIndex of the rendered html tag.
+     * @param tabindex - the tab index.
+     * @jsptagref.attributedescription
+     * The tabIndex of the rendered HTML tag.  This attribute determines the position of the
+     * tag in the sequence of page elements that the user may advance through by pressing the TAB key.
+     *
+     * @jsptagref.databindable false
+     *
+     * @jsptagref.attributesyntaxvalue <i>string_tabIndex</i>
+     *
+     * @netui:attribute required="false" rtexprvalue="true" type="int"
+     * @netui.tldx:attribute category="misc"
+     */
+    public void setTabindex(int tabindex)
+    {
+        _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, TABINDEX, Integer.toString(tabindex));
+    }
+
+    //*************************************** TAG METHODS *****************************************
 
     /**
      * Prepare the TextBox's formatters.
@@ -227,8 +289,8 @@
      */
     public int doEndTag() throws JspException
     {
-        ServletRequest req = pageContext.getRequest();
         String scriptId = null;
+        ServletRequest req = pageContext.getRequest();
 
         // Create an appropriate "input" element based on our parameters
         if (_password) {
@@ -248,27 +310,21 @@
         if ((textObject == null) || (textObject.toString().length() == 0)) {
             textObject = _defaultValue;
         }
-        assert(textObject != null) : "Default value was evaluated to null";
 
-        String text = formatText(textObject);
-        if (text != null)
+        // Get the text value for the textbox, the result
+        String text = null;
+        if (textObject != null) {
+            text = formatText(textObject);
             text = HtmlUtils.filter(text);
-        if (text == null) {
-            text = "";
         }
         _state.value = text;
 
         StringBuilder results = new StringBuilder(256);
 
-        // report any errors that may be found
-        if (hasErrors()) {
-            reportErrors();
-            localRelease();
-            return EVAL_PAGE;
-        }
-
         // create the input tag.
         TagRenderingBase br = TagRenderingBase.Factory.getRendering(TagRenderingBase.INPUT_TEXT_TAG, req);
+        assert(br != null);
+
         br.doStartTag(results, _state);
         br.doEndTag(results);
 
@@ -276,7 +332,11 @@
         if (scriptId != null)
             results.append(scriptId);
 
-        write(results.toString());
+        // report any errors that may be found
+        if (hasErrors())
+            reportErrors();
+        else
+            write(results.toString());
 
         localRelease();
         return EVAL_PAGE;
@@ -312,8 +372,8 @@
     private String formatText(Object text)
             throws JspException
     {
-        if (text == null)
-            return null;
+        assert(text != null) : "parameter 'text' must not be null";
+
         if (_formatters == null)
             return text.toString();
 
@@ -327,65 +387,5 @@
             }
         }
         return text.toString();
-    }
-
-
-    /**
-     * Sets the accessKey attribute value.  This should key value of the
-     * keyboard navigation key.  It is recommended not to use the following
-     * values because there are often used by browsers <code>A, C, E, F, G,
-     * H, V, left arrow, and right arrow</code>.
-     * @param accessKey - the accessKey value.
-     * @jsptagref.attributedescription
-     * The keyboard navigation key for the element.
-     * The following values are not recommended because they
-     * are often used by browsers: <code>A, C, E, F, G, 
-     * H, V, left arrow, and right arrow</code>
-     * 
-     * @jsptagref.databindable false
-     * 
-     * @jsptagref.attributesyntaxvalue <i>string_accessKey</i>
-     *
-     * @netui:attribute required="false" rtexprvalue="true" type="char"
-     */
-    public void setAccessKey(char accessKey)
-    {
-        _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ACCESSKEY, Character.toString(accessKey));
-    }
-
-    /**
-     * Sets the alt attribute value.
-     * @param alt - the alt value.
-     * @jsptagref.attributedescription
-     * The alt attribute of the element.
-     * 
-     * @jsptagref.databindable Read Only
-     * 
-     * @jsptagref.attributesyntaxvalue <i>string_alt</i>
-     *
-     * @netui:attribute required="false"  rtexprvalue="true"
-     */
-    public void setAlt(String alt)
-    {
-        _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ALT, alt);
-    }
-
-    /**
-     * Sets the tabIndex of the rendered html tag.
-     * @param tabindex - the tab index.
-     * @jsptagref.attributedescription
-     * The tabIndex of the rendered HTML tag.  This attribute determines the position of the 
-     * tag in the sequence of page elements that the user may advance through by pressing the TAB key. 
-     * 
-     * @jsptagref.databindable false
-     * 
-     * @jsptagref.attributesyntaxvalue <i>string_tabIndex</i>
-     *
-     * @netui:attribute required="false" rtexprvalue="true" type="int"
-     * @netui.tldx:attribute category="misc"
-     */
-    public void setTabindex(int tabindex)
-    {
-        _state.registerAttribute(AbstractHtmlState.ATTR_GENERAL, TABINDEX, Integer.toString(tabindex));
     }
 }

Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/AnchorTag.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/AnchorTag.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/AnchorTag.java	Sun Jul 25 10:41:26 2004
@@ -81,7 +81,7 @@
             renderAttribute(sb, CLASS, state.styleClass);
             renderAttributes(AbstractHtmlState.ATTR_GENERAL, sb, state);
             renderAttribute(sb, STYLE, state.style);
-            renderAttributes(AbstractHtmlState.ATTR_JAVASCRIPT, sb, state);
+            renderAttributes(AbstractHtmlState.ATTR_JAVASCRIPT, sb, state, false);
 
             renderAttributeSingleQuotes(sb, ONCLICK, state.onClick);
             sb.append(">");

Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/TagHtmlBase.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/TagHtmlBase.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/TagHtmlBase.java	Sun Jul 25 10:41:26 2004
@@ -27,7 +27,7 @@
      * are rendered with in a name="value" style supported by XML.
      * @param type an integer key indentifying the map
      */
-    protected void renderAttributes(int type, StringBuilder sb, AbstractAttributeState state)
+    protected void renderAttributes(int type, StringBuilder sb, AbstractAttributeState state, boolean doubleQuote)
     {
         HashMap map = null;
         switch (type) {
@@ -37,9 +37,9 @@
             map = htmlState.getEventMap();
             break;
         default:
-            super.renderAttributes(type, sb, state);
+            super.renderAttributes(type, sb, state, doubleQuote);
             return;
         }
-        renderGeneral(map, sb);
+        renderGeneral(map, sb, doubleQuote);
     }
 }

Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/TagRenderingBase.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/TagRenderingBase.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/rendering/TagRenderingBase.java	Sun Jul 25 10:41:26 2004
@@ -49,7 +49,6 @@
     public static final int XHTML_RENDERING = 2;
 
     //////////////////////////////////// Supported Rendering Constants  ////////////////////////////
-    // @todo: Lets put this stuff into the request and then lookup the renderers based upon position
 
     /**
      * Token identifying the Anchor Renderer &lt;a>
@@ -173,7 +172,7 @@
      * are rendered with in a name="value" style supported by XML.
      * @param type an integer key indentifying the map
      */
-    protected void renderAttributes(int type, StringBuilder sb, AbstractAttributeState state)
+    protected void renderAttributes(int type, StringBuilder sb, AbstractAttributeState state, boolean doubleQuote)
     {
         HashMap map = null;
         switch (type) {
@@ -186,14 +185,18 @@
             logger.error(s);
             throw new IllegalStateException(s);
         }
-        renderGeneral(map, sb);
+        renderGeneral(map, sb, doubleQuote);
+    }
+
+    final protected void renderAttributes(int type, StringBuilder sb, AbstractAttributeState state) {
+        renderAttributes(type,sb,state,true);
     }
 
 
     /**
      * This method will render all of the general attributes.
      */
-    protected void renderGeneral(HashMap map, StringBuilder sb)
+    protected void renderGeneral(HashMap map, StringBuilder sb, boolean doubleQuote)
     {
         if (map == null)
             return;
@@ -205,7 +208,10 @@
                 continue;
 
             String value = (String) map.get(key);
-            renderAttribute(sb, key, value);
+            if (doubleQuote)
+                renderAttribute(sb, key, value);
+            else
+                renderAttributeSingleQuotes(sb, key, value);
         }
     }
 

Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java	Sun Jul 25 10:41:26 2004
@@ -405,15 +405,6 @@
     }
 
     /**
-     * Returns the is run at client state.
-     * @return
-     */
-    //public boolean isRunAtClient()
-    //{
-    //    return _runAtClient;
-    //}
-
-    /**
      * @param runAtClient
      * @netui:attribute required="false" rtexprvalue="false"
      */
@@ -804,7 +795,6 @@
         }
 
         // add any attributes to the renderer
-        //System.err.println("Render [" + node.getName() + "]\t" + attrs);
         AttributeRenderer.RemoveInfo removes = attrs.addElement(node);
 
         // get the renderers for this tree...
@@ -1001,7 +991,7 @@
                     action = escapeEscapes(action);
                     action = JavaScriptUtils.getString("netuiAction", new Object[]{action});
                 }
-                _anchorState.registerAttribute(AbstractHtmlState.ATTR_GENERAL, ONCLICK, action);
+               _anchorState.onClick = action;
             }
 
             // actually render the anchor.

Modified: incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Attribute.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Attribute.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Attribute.java	Sun Jul 25 10:41:26 2004
@@ -208,8 +208,8 @@
             }
         }
         catch (IOException e) {
-            //@TODO: this needs to be caught and cleaned up
-            e.printStackTrace();
+            localRelease();
+            throw new JspException("Caught IO Exception:" + e.getMessage(),e);
         }
         localRelease();
         return EVAL_PAGE;

Modified: incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/IncludeSection.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/IncludeSection.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/IncludeSection.java	Sun Jul 25 10:41:26 2004
@@ -308,7 +308,9 @@
         }
     }
 
-    private boolean defaultExists() {
+    private boolean defaultExists()
+        throws JspException
+    {
         HttpServletRequest req = (HttpServletRequest) pageContext.getRequest();
         String realURI = Template.getRealURI(req,_default);
         try {
@@ -316,11 +318,12 @@
             return (uri != null);
         }
         catch (MalformedURLException e) {
-            // @TODO: We need to log an error here...
-            System.err.println("Malformed URI");
-            e.printStackTrace();
+           String s = Bundle.getString("TempExcp_ExceptIncludeDefault",
+                    new Object[]{"MalformedURLException",
+                                 _default});
+            logger.error(s,e);
+            throw new JspException(s,e);
         }
-        return false;
     }
 
     /**

Modified: incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Section.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Section.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Section.java	Sun Jul 25 10:41:26 2004
@@ -20,6 +20,7 @@
 
 import org.apache.beehive.netui.tags.AbstractBaseTag;
 import org.apache.beehive.netui.tags.databinding.repeater.Repeater;
+import org.apache.beehive.netui.util.Bundle;
 
 import javax.servlet.ServletRequest;
 import javax.servlet.jsp.JspException;
@@ -215,10 +216,13 @@
         // If the parent tag is a repeater then we must insure that the parent of that is a DivPanel
         if (parentTag instanceof Repeater) {
             parentTag = parentTag.getParent();
-            //@todo: if this is not a DivPanel then we report an error
             if (!(parentTag instanceof DivPanel)) {
-                System.err.println("Sections inside of a Repeater must be inside a div panel");
-            }
+                String s = Bundle.getString("Temp_SectionInRepeater");
+                registerTagError(s,null);
+                reportErrors();
+                localRelease();
+                return EVAL_PAGE;
+             }
         }
         if (parentTag instanceof DivPanel) {
             StringBuilder results = new StringBuilder(128);

Modified: incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Template.java
==============================================================================
--- incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Template.java	(original)
+++ incubator/beehive/trunk/netui/src/tags-template/org/apache/beehive/netui/tags/template/Template.java	Sun Jul 25 10:41:26 2004
@@ -249,8 +249,11 @@
 
         RequestDispatcher rd = req.getRequestDispatcher(realURI);
         if (rd == null) {
-            // @todo: report an error here.
-            System.err.println("The request dispatch just returned a null");
+            String s = Bundle.getString("Temp_RequestDispatcherReturnNull",new Object[]{"realURI"});
+            registerTagError(s,null);
+            reportErrors();
+            localRelease();
+            return SKIP_PAGE;
         }
         try {
             // dispatch to the template itself...
@@ -300,7 +303,7 @@
                 logger.error(s);
 
                 if (t.getMessage() == null) {
-// @TODO: Need a logger message here
+                    logger.error("Unwinding Servlet Exception",t);
                     t.printStackTrace();
                 }
                 if (t instanceof ServletException)
@@ -351,17 +354,20 @@
         return SKIP_PAGE;
     }
 
-    private boolean templateExists(String realURI) {
+    private boolean templateExists(String realURI)
+        throws JspException
+    {
         try {
             URL uri = pageContext.getServletContext().getResource(realURI);
             return (uri != null);
         }
         catch (MalformedURLException e) {
-            // @TODO: We need to log an error here...
-            System.err.println("Malformed URI");
-            e.printStackTrace();
+            String s = Bundle.getString("TempExcp_ExceptIncludeDefault",
+                     new Object[]{"MalformedURLException",
+                                  realURI});
+             logger.error(s,e);
+             throw new JspException(s,e);
         }
-        return false;
     }
 
     static String getRealURI(HttpServletRequest req,String uri) {

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 Jul 25 10:41:26 2004
@@ -513,6 +513,8 @@
 
 #template servlet exception
 TempLog_ServletError=Servlet Exception occured include template: {0}, message: {1}
+Temp_SectionInRepeater=Sections inside of a Repeater must be inside a div panel
+Temp_RequestDispatcherReturnNull=The RequestDispatcher returned a null for URI [{0}]
 
 # Template Logging Strings
 TempLog_ServletException=Servlet Exception occured including template: {0}