    001    package org.apache.turbine.modules.screens;
    002
    003    /*
    004     * Licensed to the Apache Software Foundation (ASF) under one
    005     * or more contributor license agreements.  See the NOTICE file
    006     * distributed with this work for additional information
    007     * regarding copyright ownership.  The ASF licenses this file
    008     * to you under the Apache License, Version 2.0 (the
    009     * "License"); you may not use this file except in compliance
    010     * with the License.  You may obtain a copy of the License at
    011     *
    012     *   http://www.apache.org/licenses/LICENSE-2.0
    013     *
    014     * Unless required by applicable law or agreed to in writing,
    015     * software distributed under the License is distributed on an
    016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    017     * KIND, either express or implied.  See the License for the
    018     * specific language governing permissions and limitations
    019     * under the License.
    020     */
    021
    022    import java.util.Iterator;
    023    import java.util.Map;
    024
    025    import org.apache.ecs.ConcreteElement;
    026    import org.apache.ecs.html.B;
    027    import org.apache.ecs.html.H3;
    028    import org.apache.ecs.html.H4;
    029    import org.apache.ecs.html.PRE;
    030    import org.apache.ecs.html.TD;
    031    import org.apache.ecs.html.TR;
    032    import org.apache.ecs.html.Table;
    033    import org.apache.turbine.modules.Screen;
    034    import org.apache.turbine.pipeline.PipelineData;
    035    import org.apache.turbine.util.RunData;
    036
    037    /**
    038     * This is a sample Error Screen module.
    039     *
    040     * @author <a href="mailto:mbryson@mont.mindspring.com">Dave Bryson</a>
    041     * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
    042     * @version $Id: Error.java 938645 2010-04-27 20:57:51Z tv $
    043     */
    044    public class Error extends Screen
    045    {
    046        /**
    047         * Build screen.
    048         *
    049         * @deprecated Use PipelineData version instead.
    050         * @param data Turbine information.
    051         * @return ConcreteElement the page with all the error information.
    052         * @throws Exception a generic exception.
    053         */
    054        public ConcreteElement doBuild(RunData data) throws Exception
    055        {
    056            data.setTitle("There has been an error!");
    057
    058            Table table = new Table().setBorder(0);
    059            boolean hasValues = false;
    060            for (Iterator it = data.getParameters().keySet().iterator();
    061                 it.hasNext();)
    062            {
    063                String key = (String) it.next();
    064                String value = data.getParameters().getString(key);
    065                TR tr =
    066                    new TR().addElement(
    067                        new TD().addElement(new B(key))).addElement(
    068                        new TD().addElement(" = " + value));
    069                table.addElement(tr);
    070                hasValues = true;
    071            }
    072
    073            Table table2 = new Table().setBorder(0);
    074            Map varDebug = data.getDebugVariables();
    075
    076            boolean hasValues2 = false;
    077            for (Iterator i = varDebug.keySet().iterator(); i.hasNext();)
    078            {
    079                String key = (String) i.next();
    080                String value = varDebug.get(key).toString();
    081                TR tr =
    082                    new TR().addElement(
    083                        new TD().addElement(new B(key))).addElement(
    084                        new TD().addElement(" = " + value));
    085                table2.addElement(tr);
    086                hasValues2 = true;
    087            }
    088
    089            data.getPage().getBody().addElement(
    090                new H3(
    091                    data.getTitle()
    092                        + " Please review the exception below "
    093                        + "for more information."));
    094
    095            if (hasValues)
    096            {
    097                data.getPage().getBody().addElement(
    098                    new H4().addElement("Get/Post Data:"));
    099                data.getPage().getBody().addElement(table);
    100            }
    101
    102            if (hasValues2)
    103            {
    104                data.getPage().getBody().addElement(
    105                    new H4().addElement("Debugging Data:"));
    106                data.getPage().getBody().addElement(table2);
    107            }
    108
    109            String trace = data.getStackTrace();
    110            if (trace != null)
    111            {
    112                data
    113                    .getPage()
    114                    .getBody()
    115                    .addElement(new H4().addElement("The exception is:"))
    116                    .addElement(new PRE(trace))
    117                    .addElement(new PRE(data.getStackTraceException().toString()));
    118            }
    119            return null;
    120        }
    121
    122
    123        /**
    124         * Build screen.
    125         *
    126         * @param data Turbine information.
    127         * @return ConcreteElement the page with all the error information.
    128         * @throws Exception a generic exception.
    129         */
    130        public ConcreteElement doBuild(PipelineData pipelineData) throws Exception
    131        {
    132            RunData data = getRunData(pipelineData);
    133            return doBuild(data);
    134        }
    135    }