Clover coverage report - Code Coverage for tapestry release 4.0.1
Coverage timestamp: Fri Mar 31 2006 09:12:14 EST
file stats: LOC: 134   Methods: 7
NCLOC: 85   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
RequestDisplay.java 100% 100% 100% 100%
coverage
 1    // Copyright 2005 The Apache Software Foundation
 2    //
 3    // Licensed under the Apache License, Version 2.0 (the "License");
 4    // you may not use this file except in compliance with the License.
 5    // You may obtain a copy of the License at
 6    //
 7    // http://www.apache.org/licenses/LICENSE-2.0
 8    //
 9    // Unless required by applicable law or agreed to in writing, software
 10    // distributed under the License is distributed on an "AS IS" BASIS,
 11    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12    // See the License for the specific language governing permissions and
 13    // limitations under the License.
 14   
 15    package org.apache.tapestry.html;
 16   
 17    import java.util.Collections;
 18    import java.util.Iterator;
 19    import java.util.List;
 20    import java.util.Properties;
 21    import java.util.StringTokenizer;
 22   
 23    import org.apache.tapestry.BaseComponent;
 24    import org.apache.tapestry.IMarkupWriter;
 25    import org.apache.tapestry.IRender;
 26    import org.apache.tapestry.IRequestCycle;
 27    import org.apache.tapestry.describe.ReportStatusHub;
 28    import org.apache.tapestry.web.WebUtils;
 29   
 30    /**
 31    * Supports the {@link org.apache.tapestry.pages.Exception} page by displaying the request,
 32    * session, servlet context and servlet object for the current request.
 33    *
 34    * @author Howard M. Lewis Ship
 35    * @since 4.0
 36    */
 37    public abstract class RequestDisplay extends BaseComponent
 38    {
 39    private boolean _even;
 40   
 41    // Injected
 42   
 43    public abstract ReportStatusHub getReportStatusHub();
 44   
 45  34 public void renderSystemProperties(IMarkupWriter writer)
 46    {
 47  34 _even = true;
 48   
 49  34 Properties p = System.getProperties();
 50   
 51  34 String pathSeparator = p.getProperty("path.separator");
 52   
 53  34 writer.begin("div");
 54  34 writer.attribute("class", "described-object-title");
 55  34 writer.print("JVM System Properties");
 56  34 writer.end();
 57  34 writer.println();
 58   
 59  34 writer.begin("table");
 60  34 writer.attribute("class", "described-object");
 61   
 62  34 Iterator i = WebUtils.toSortedList(p.keys()).iterator();
 63   
 64  34 while (i.hasNext())
 65    {
 66  2244 String key = (String) i.next();
 67  2244 String value = p.getProperty(key);
 68   
 69  2244 renderKeyAndValue(writer, key, value, pathSeparator);
 70    }
 71   
 72  34 writer.end();
 73    }
 74   
 75  2244 private void renderKeyAndValue(IMarkupWriter writer, String key, String value,
 76    String pathSeparator)
 77    {
 78  2244 String[] values = split(key, value, pathSeparator);
 79   
 80  2244 for (int i = 0; i < values.length; i++)
 81    {
 82  3910 writer.begin("tr");
 83   
 84  3910 writer.attribute("class", _even ? "even" : "odd");
 85   
 86  3910 _even = !_even;
 87   
 88  3910 writer.begin("th");
 89   
 90  3910 if (i == 0)
 91  2244 writer.print(key);
 92   
 93  3910 writer.end();
 94  3910 writer.begin("td");
 95  3910 writer.print(values[i]);
 96  3910 writer.end("tr");
 97  3910 writer.println();
 98    }
 99    }
 100   
 101  2244 private String[] split(String key, String value, String pathSeparator)
 102    {
 103  2244 if (!key.endsWith(".path"))
 104  2074 return new String[]
 105    { value };
 106   
 107  170 StringTokenizer tokenizer = new StringTokenizer(value, pathSeparator);
 108  170 List values = Collections.list(tokenizer);
 109   
 110  170 return (String[]) values.toArray(new String[values.size()]);
 111    }
 112   
 113  34 public IRender getSystemPropertiesRenderer()
 114    {
 115  34 return new IRender()
 116    {
 117  34 public void render(IMarkupWriter writer, IRequestCycle cycle)
 118    {
 119  34 renderSystemProperties(writer);
 120    }
 121    };
 122    }
 123   
 124  34 public IRender getReportStatusRenderer()
 125    {
 126  34 return new IRender()
 127    {
 128  34 public void render(IMarkupWriter writer, IRequestCycle cycle)
 129    {
 130  34 getReportStatusHub().fireReportStatus(writer);
 131    }
 132    };
 133    }
 134    }