Author: dolander Date: Sat Jan 29 16:31:56 2005 New Revision: 149088 URL: http://svn.apache.org/viewcvs?view=rev&rev=149088 Log: Add the ability for the JavaScript reportNetUIErrors to post those errors back to the server so they can be logged.
Cleaned up a bunch of TODOs by adding logging to the tree. Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/javascript/jsReportError/ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/javascript/jsReportError/Controller.jpf incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/javascript/jsReportError/index.jsp incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/JsReportError.xml Modified: incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/xmlhttprequest/XmlHttpRequestServlet.java incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ConfigurePopup.java incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/RetrievePopupOutput.java incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/AttributeRenderer.java incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/ServletTreeRenderer.java incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeContent.java incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeLabel.java incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreePropertyOverride.java incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Modified: incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js&r1=149087&p2=incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js (original) +++ incubator/beehive/trunk/netui/src/javascript/tagshtml/netui-tree.js Sat Jan 29 16:31:56 2005 @@ -54,21 +54,21 @@ NetUITree.prototype.getTreeName = function(node) { if (node.nodeName != "A") - return reportError("getTreeName: Expected Node was not an A:" + node.nodeName); + return reportNetUIError("getTreeName: Expected Node was not an A:" + node.nodeName); // parent of the A should be a DIV node = node.parentNode; if (node.nodeName != "DIV") - return reportError("getTreeName: Expected Node was not an DIV:" + node.nodeName); + return reportNetUIError("getTreeName: Expected Node was not an DIV:" + node.nodeName); // parent of the DIV is the root of the tree DIV node = node.parentNode; if (node.nodeName != "DIV") - return reportError("getTreeName: Expected Node was not an DIV:" + node.nodeName); + return reportNetUIError("getTreeName: Expected Node was not an DIV:" + node.nodeName); var attr = node.getAttribute("netui:treeName"); if (attr == null) - return reportError("getTreeName: The treeName was not found"); + return reportNetUIError("getTreeName: The treeName was not found"); return attr; } @@ -97,12 +97,12 @@ var func = function() { if (req.readyState==4) { if (req.status == 200) { - if (req.responseXML!=null) { + if (req.responseXML!=null && callback != null) { callback(req); } } else { - reportError("Unable to retrieve XML data:" + req.statusText); + reportNetUIError("Unable to retrieve XML data:" + req.statusText); } } } @@ -158,7 +158,7 @@ var txt = getCData(treeDivs[j]); //alert("Text:" + txt.nodeValue); if (txt == null) { - reportError("Didn't find the CDATA"); + reportNetUIError("Didn't find the CDATA"); return; } @@ -193,7 +193,7 @@ { // make sure that what is calling this is an anchor if (this.nodeName != "A") - return reportError("NetUIExpandTree: Expected Node was not an A:" + this.nodeName); + return reportNetUIError("NetUIExpandTree: Expected Node was not an A:" + this.nodeName); // Create the XmlHttpRequest that will inform the server of the // change in the client state. @@ -213,14 +213,14 @@ } } if (img == null) - return reportError("IMG tag not found"); + return reportNetUIError("IMG tag not found"); img.src = netUI.webAppName + netUI.netUITree.imgExpandName; this.onclick = NetUICollapseTree; // go up the level and get the Div var parentDiv = this.parentNode; if (parentDiv.nodeName != "DIV") - return reportError("Expected Node was not an DIV:" + parentDiv.nodeName); + return reportNetUIError("Expected Node was not an DIV:" + parentDiv.nodeName); var depth = netUI.netUITree.getDepth(parentDiv); parentDiv.setAttribute("netui-tree-anchor","expand"); @@ -241,7 +241,7 @@ function NetUICollapseTree() { if (this.nodeName != "A") - return reportError("NetUICollapseTree: Expected Node was not an A:" + this.nodeName); + return reportNetUIError("NetUICollapseTree: Expected Node was not an A:" + this.nodeName); return NetUICollapseTreeNode(this,true); } @@ -251,7 +251,7 @@ { // verify we are inside an anchor if (node.nodeName != "A") - return reportError("NetUICollapseTreeNode: Expected Node was not an A:" + node.nodeName); + return reportNetUIError("NetUICollapseTreeNode: Expected Node was not an A:" + node.nodeName); // Create the XmlHttpRequest that will inform the server of the // change in the client state. @@ -271,7 +271,7 @@ } } if (img == null) - return reportError("IMG tag not found"); + return reportNetUIError("IMG tag not found"); // set the image to be the collapse image img.src = netUI.webAppName + netUI.netUITree.imgCollapseName; @@ -280,7 +280,7 @@ // go up the level var parentDiv = node.parentNode; if (parentDiv.nodeName != "DIV") - return reportError("Expected Node was not a DIV:" + parentDiv.nodeName); + return reportNetUIError("Expected Node was not a DIV:" + parentDiv.nodeName); // get the depth and then begin to collapse rows var depth = netUI.netUITree.getDepth(parentDiv); @@ -296,7 +296,7 @@ { var parentDiv = a.parentNode; if (parentDiv.nodeName != "DIV") - return reportError("Exception Node was not a DIV:" + parentDiv.nodeName); + return reportNetUIError("Exception Node was not a DIV:" + parentDiv.nodeName); return parentDiv; } @@ -305,7 +305,7 @@ NetUITree.prototype.getDepth = function(div) { if (div.nodeName != "DIV") - return reportError("getDepth only support DIV nodes, found: " + div.nodeName); + return reportNetUIError("getDepth only support DIV nodes, found: " + div.nodeName); var attr = div.getAttribute("netui-tree-level"); return attr; @@ -373,7 +373,7 @@ NetUITree.prototype.expandTree = function(depth,div) { if (div.nodeName != "DIV") - return reportError("expandTree only support DIV nodes, found: " + div.nodeName); + return reportNetUIError("expandTree only support DIV nodes, found: " + div.nodeName); //alert("inside expand:" + depth); while (true) { @@ -565,8 +565,11 @@ } // Utility function to report an error -function reportError(msg) +function reportNetUIError(msg) { - alert(msg); + var url = netUI.webAppName + "/netuiError" + NetUI.prototype.xmlHttpRequestMapping + + "?error=" + msg; + netUI.raiseCommand(url,null); + window.status = msg; return false; } Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/xmlhttprequest/XmlHttpRequestServlet.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/xmlhttprequest/XmlHttpRequestServlet.java?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/xmlhttprequest/XmlHttpRequestServlet.java&r1=149087&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/xmlhttprequest/XmlHttpRequestServlet.java&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/xmlhttprequest/XmlHttpRequestServlet.java (original) +++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/xmlhttprequest/XmlHttpRequestServlet.java Sat Jan 29 16:31:56 2005 @@ -19,9 +19,11 @@ import org.apache.beehive.netui.pageflow.requeststate.ServletInterceptorContext; import org.apache.beehive.netui.pageflow.requeststate.IRequestInterceptor; +import org.apache.beehive.netui.pageflow.requeststate.InterceptorContext; import org.apache.beehive.netui.util.config.ConfigUtil; import org.apache.beehive.netui.util.config.bean.NetuiConfigDocument; import org.apache.beehive.netui.util.config.bean.RequestInterceptors; +import org.apache.beehive.netui.util.logging.Logger; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletResponse; @@ -32,6 +34,7 @@ public class XmlHttpRequestServlet extends HttpServlet { + private static final Logger logger = Logger.getInstance(XmlHttpRequestServlet.class); private ArrayList<IRequestInterceptor> _interceptors; public void init() @@ -46,21 +49,21 @@ return; _interceptors = new ArrayList<IRequestInterceptor>(inter.length); + _interceptors.add(new ErrorCRI()); for (String i : inter) { try { Class cls = Class.forName(i); IRequestInterceptor interceptor = (IRequestInterceptor) cls.newInstance(); _interceptors.add(interceptor); } - //@todo:need to log these errors - catch (ClassNotFoundException ignore) { - System.err.println("Class not found"); + catch (ClassNotFoundException error) { + logger.error("Interceptor class not found:" + i,error); } - catch (InstantiationException ignore) { - System.err.println("Instantiation Error"); + catch (InstantiationException error) { + logger.error("Unable to create intercptor class:" + i,error); } - catch (IllegalAccessException ignore) { - System.err.println("IllegalAccessException"); + catch (IllegalAccessException error) { + logger.error("Illegal access of intercptor class:" + i,error); } } } @@ -86,5 +89,36 @@ throws IOException, ServletException { doGet(request, response); + } + + class ErrorCRI implements IRequestInterceptor + { + public void interceptRequest(InterceptorContext ctxt) + { + // Create the command by striping off the context path and the extension + HttpServletRequest request = (HttpServletRequest) ((ServletInterceptorContext) ctxt).getRequest(); + String cmd = request.getRequestURI(); + String ctxtPath = request.getContextPath(); + + // catch any runtime errors here and return. + try { + cmd = cmd.substring(ctxtPath.length() + 1); + int idx = cmd.lastIndexOf('.'); + if (idx != -1) { + cmd = cmd.substring(0, idx); + } + + if ("netuiError".equals(cmd)) { + String error = request.getParameter("error"); + logger.error("NetUI JavaScript Error:" + error); + System.err.println("NetUI JavaScript Error:" + error); + } + } + catch (RuntimeException e) { + logger.error("Runtime Error creating XmlRequestServlet Command:" + e.getClass().getName(),e); + } + + + } } } Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ConfigurePopup.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ConfigurePopup.java?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ConfigurePopup.java&r1=149087&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ConfigurePopup.java&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ConfigurePopup.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/ConfigurePopup.java Sat Jan 29 16:31:56 2005 @@ -39,7 +39,6 @@ * @netui:tag name="configurePopup" description="Configures popup window parameters for parent tags that can open popup windows." * @netui.tldx:tag requiredparent="anchor button form image imageAnchor data:anchorColumn" * requiredchild="#nothing" - * renderer="TODO" * bodycontentpref="empty" * whitespace="indent" */ Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/RetrievePopupOutput.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/RetrievePopupOutput.java?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/RetrievePopupOutput.java&r1=149087&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/RetrievePopupOutput.java&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/RetrievePopupOutput.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/RetrievePopupOutput.java Sat Jan 29 16:31:56 2005 @@ -40,7 +40,6 @@ * @netui:tag name="retrievePopupOutput" description="Causes a value to be retrieved when a popup window closes." * @netui.tldx:tag requiredparent="configurePopup" * requiredchild="#nothing" - * renderer="TODO" * bodycontentpref="empty" * whitespace="indent" */ Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/AttributeRenderer.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/AttributeRenderer.java?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/AttributeRenderer.java&r1=149087&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/AttributeRenderer.java&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/AttributeRenderer.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/AttributeRenderer.java Sat Jan 29 16:31:56 2005 @@ -320,10 +320,7 @@ // remove the attributes from the array list -- this should never fail boolean removed = al.remove(attr); - if (!removed) { - // @todo: need to remove this...This should become an assert... - System.err.println("Unable to remove attribute:" + attr.getAttribute() + "=" + attr.getValue()); - } + assert(removed) : "Unable to remove attribute:" + attr.getAttribute() + "=" + attr.getValue(); // if there was a list of removed attributes we need to possibly add one back // We do this by walking the removes list and when we find an attribute with the @@ -361,26 +358,6 @@ } } } - - /** - * @param sb - * @param name - * @param value - */ - private void writeAttribute(StringBuilder sb, String name, String value) - { - // @todo: this is duplicated from AbstractBaseTag. Not sure if that shouldn't become a static - // method that could be shared. - if (value == null) - return; - assert(name != null); - sb.append(" "); - sb.append(name); - sb.append("=\""); - sb.append(value); - sb.append("\""); - } - public static class RemoveInfo { Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/ServletTreeRenderer.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/ServletTreeRenderer.java?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/ServletTreeRenderer.java&r1=149087&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/ServletTreeRenderer.java&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/ServletTreeRenderer.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/ServletTreeRenderer.java Sat Jan 29 16:31:56 2005 @@ -19,6 +19,7 @@ import org.apache.beehive.netui.tags.rendering.AbstractHtmlState; import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; +import org.apache.beehive.netui.util.logging.Logger; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -27,6 +28,7 @@ public class ServletTreeRenderer extends TreeRenderer { + private static final Logger logger = Logger.getInstance(ServletTreeRenderer.class); AbstractRenderAppender _writer; StringBuilder _sb; @@ -51,11 +53,18 @@ _sb.setLength(0); } + /** + * Errors during rendering will call through this method. During the XmlHttpRequest, these + * will just be logged and we will go on. + * @param message + * @param e + * @throws JspException + */ protected void registerTagError(String message, Throwable e) throws JspException { - // @todo: add logging here System.err.println("Error in rendering tree:" + message); + logger.error(message,e); } protected String renderTagId(HttpServletRequest request, String tagId, AbstractHtmlState state) Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java&r1=149087&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeCRI.java Sat Jan 29 16:31:56 2005 @@ -21,6 +21,7 @@ import org.apache.beehive.netui.tags.rendering.AbstractRenderAppender; import org.apache.beehive.netui.tags.rendering.StringBuilderRenderAppender; import org.apache.beehive.netui.tags.TagConfig; +import org.apache.beehive.netui.util.logging.Logger; import javax.servlet.ServletContext; import javax.servlet.ServletResponse; @@ -35,6 +36,8 @@ private static final String TREE_COLLAPSE = "treeCollapse"; private static final String TREE_EXPAND = "treeExpand"; + private static final Logger logger = Logger.getInstance(TreeCRI.class); + // The elements we will create in the document private static final String TREE_EXPAND_ELEM = "treeExpand"; @@ -88,13 +91,11 @@ // get the tree from the name service INameable n = ns.get(tree); if (n == null) { - // @todo: need to log there errors - System.err.println("Tree '" + tree + "' was not found in the NameService"); + logger.error("Tree '" + tree + "' was not found in the NameService"); return; } if (!(n instanceof ITreeRootElement)) { - // @todo: need to log there errors - System.err.println("Named Tree was not an instance of a ITreeRootElement"); + logger.error("Named Tree was not an instance of a ITreeRootElement"); return; } @@ -134,14 +135,11 @@ } } catch (JspException se) { - // @todo: need to log this - se.printStackTrace(); + logger.error("Received a JSP excpetion Rendering the Tree",se); return; } - // add the tree text - writeEndElement(writer,TREE_EXPAND_ELEM); write(response,sb.toString()); } Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeContent.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeContent.java?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeContent.java&r1=149087&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeContent.java&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeContent.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeContent.java Sat Jan 29 16:31:56 2005 @@ -18,6 +18,7 @@ package org.apache.beehive.netui.tags.tree; import org.apache.beehive.netui.tags.AbstractSimpleTag; +import org.apache.beehive.netui.util.logging.Logger; import javax.servlet.jsp.JspException; import java.io.IOException; @@ -32,6 +33,7 @@ */ public class TreeContent extends AbstractSimpleTag { + private static final Logger logger = Logger.getInstance(TreeContent.class); private String _text; /** @@ -56,8 +58,7 @@ Object o = getParent(); assert (o != null); if (!(o instanceof TreeItem)) { - // @todo: this needs to be logged.... - System.err.println("Invalid Parent:" + o.getClass().getName()); + logger.error("Invalid Parent (expected a TreeItem):" + o.getClass().getName()); return; } Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java&r1=149087&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java Sat Jan 29 16:31:56 2005 @@ -257,16 +257,6 @@ } /** - * @netui:attribute required="false" - * description="" - */ - // @TODO: this should be added back with an expression - //public void setNode(TreeElement node) - //{ - // _treeElement = node; - //} - - /** * Sets the window target. * @param target - the window target. * @netui:attribute required="false" rtexprvalue="true" Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeLabel.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeLabel.java?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeLabel.java&r1=149087&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeLabel.java&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeLabel.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeLabel.java Sat Jan 29 16:31:56 2005 @@ -21,6 +21,7 @@ import javax.servlet.jsp.JspException; import java.io.IOException; +import org.apache.beehive.netui.util.logging.Logger; /** * @netui:tag name="treeLabel" body-content="scriptless" description="Set the label for the parent TreeItem." @@ -32,6 +33,8 @@ */ public class TreeLabel extends AbstractSimpleTag { + private static final Logger logger = Logger.getInstance(TreeLabel.class); + private String _text; /** @@ -56,8 +59,7 @@ Object o = getParent(); assert (o != null); if (!(o instanceof TreeItem)) { - // @todo: this needs to be logged. - System.err.println("Invalid Parent:" + o.getClass().getName()); + logger.error("Invalid Parent (expected a TreeItem):" + o.getClass().getName()); return; } Modified: incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreePropertyOverride.java Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreePropertyOverride.java?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreePropertyOverride.java&r1=149087&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreePropertyOverride.java&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreePropertyOverride.java (original) +++ incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreePropertyOverride.java Sat Jan 29 16:31:56 2005 @@ -18,6 +18,7 @@ package org.apache.beehive.netui.tags.tree; import org.apache.beehive.netui.tags.AbstractSimpleTag; +import org.apache.beehive.netui.util.logging.Logger; import javax.servlet.jsp.JspException; @@ -27,6 +28,7 @@ */ public class TreePropertyOverride extends AbstractSimpleTag { + private static final Logger logger = Logger.getInstance(TreePropertyOverride.class); private InheritableState _iState = new InheritableState(); /** @@ -193,8 +195,7 @@ Object o = getParent(); assert (o != null); if (!(o instanceof TreeItem)) { - // @todo: this needs to be logged. - System.err.println("Invalid Parent:" + o.getClass().getName()); + logger.error("Invalid Parent (expected a TreeItem):" + o.getClass().getName()); return; } Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/javascript/jsReportError/Controller.jpf Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/javascript/jsReportError/Controller.jpf?view=auto&rev=149088 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/javascript/jsReportError/Controller.jpf Sat Jan 29 16:31:56 2005 @@ -0,0 +1,39 @@ +package javascript.jsReportError; + +import javax.servlet.http.HttpSession; +import org.apache.beehive.netui.pageflow.FormData; +import org.apache.beehive.netui.pageflow.PageFlowController; +import org.apache.beehive.netui.pageflow.Forward; +import org.apache.beehive.netui.pageflow.annotations.Jpf; + +/** + * This is the default controller for a blank web application. + */ [EMAIL PROTECTED] +public class Controller extends PageFlowController +{ + @Jpf.Action( + forwards={ + @Jpf.Forward(name="index", path="index.jsp") + } + ) + protected Forward begin() + { + return new Forward("index"); + } + + + /** + * Callback that is invoked when this controller instance is created. + */ + protected void onCreate() + { + } + + /** + * Callback that is invoked when this controller instance is destroyed. + */ + protected void onDestroy(HttpSession session) + { + } +} Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/javascript/jsReportError/index.jsp Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/javascript/jsReportError/index.jsp?view=auto&rev=149088 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/javascript/jsReportError/index.jsp Sat Jan 29 16:31:56 2005 @@ -0,0 +1,18 @@ +<%@ page language="java" contentType="text/html;charset=UTF-8"%> +<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%> +<netui:html idScope="html"> + <head> + <netui:base/> + <netui:scriptHeader /> + </head> + <netui:body> + <p style="color:green">Basic test of reporting error from JavaScript to the server using + XmlHttpRequest. + </p> +<netui:scriptBlock placement="after"> +reportNetUIError("BVT Test of ClientSide Error reporting"); +</netui:scriptBlock> + </netui:body> +</netui:html> + + \ No newline at end of file Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?view=diff&rev=149088&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r1=149087&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r2=149088 ============================================================================== --- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml (original) +++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml Sat Jan 29 16:31:56 2005 @@ -3883,6 +3883,19 @@ </features> </test> <test> + <name>JsReportError</name> + <description>Log Client errors on the server</description> + <webapp>coreWeb</webapp> + <categories> + <category>bvt</category> + <category>bvt.struts11</category> + <category>tags</category> + </categories> + <features> + <feature>JavaScript</feature> + </features> + </test> + <test> <name>jsScriptScopeId</name> <description>Test that scope id works</description> <webapp>coreWeb</webapp> Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/JsReportError.xml Url: http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/JsReportError.xml?view=auto&rev=149088 ============================================================================== --- (empty file) +++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/JsReportError.xml Sat Jan 29 16:31:56 2005 @@ -0,0 +1,183 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session"> + <ses:sessionName>JsReportError</ses:sessionName> + <ses:tester>Daryl</ses:tester> + <ses:startDate>29 Jan 2005, 04:40:33.997 PM MST</ses:startDate> + <ses:description>Basic verification of errors reported on the client being posted to the server.</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/javascript/jsReportError/Controller.jpf</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters/> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>88642386E8BA058E683432AB4863DA77</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=88642386E8BA058E683432AB4863DA77</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.5) Gecko/20041107 Firefox/1.0</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" + "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en" netui:idScope="html"> + + <head> + <base href="http://localhost:8080/coreWeb/javascript/jsReportError/index.jsp"> + <script language="JavaScript" type="text/JavaScript" src="/coreWeb/resources/beehive/version1/javascript/netui-tree.js"></script> + </head> + <body> + <p style="color:green">Basic test of reporting error from JavaScript to the server using + XmlHttpRequest. + </p> + + + +<script language="JavaScript" type="text/JavaScript"> +<!-- + +// **** Start the NetUI Framework Generated JavaScript **** + +// write out the webapp name +netUI.webAppName = "/coreWeb"; +--> +</script> + + + +<script language="JavaScript" type="text/JavaScript"> +<!-- + +reportNetUIError("BVT Test of ClientSide Error reporting"); + +--> +</script> + +</div> +</body> +</html>]]></ses:responseBody> + </ses:response> + </ses:test> + <ses:test> + <ses:testNumber>2</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/netuiError.xhr</ses:uri> + <ses:method>GET</ses:method> + <ses:parameters> + <ses:parameter> + <ses:name>error</ses:name> + <ses:value>BVT Test of ClientSide Error reporting</ses:value> + </ses:parameter> + </ses:parameters> + <ses:cookies> + <ses:cookie> + <ses:name>JSESSIONID</ses:name> + <ses:value>88642386E8BA058E683432AB4863DA77</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>cache-control</ses:name> + <ses:value>no-cache</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=88642386E8BA058E683432AB4863DA77</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>pragma</ses:name> + <ses:value>no-cache</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.5) Gecko/20041107 Firefox/1.0</ses:value> + </ses:header> + </ses:headers> + </ses:request> + <ses:response> + <ses:statusCode>200</ses:statusCode> + <ses:reason/> + <ses:responseBody/> + </ses:response> + </ses:test> + </ses:tests> + <ses:endDate>29 Jan 2005, 04:40:45.053 PM MST</ses:endDate> + <ses:testCount>2</ses:testCount> +</ses:recorderSession> \ No newline at end of file
