in tapestry-framework/src/org/apache/tapestry/html/Shell.java [50:136]
protected void renderComponent(IMarkupWriter writer, IRequestCycle cycle)
{
long startTime = 0;
boolean rewinding = cycle.isRewinding();
if (!rewinding)
{
startTime = System.currentTimeMillis();
writeDocType(writer, cycle);
IPage page = getPage();
writer.comment("Application: " + page.getEngine().getSpecification().getName());
writer.comment("Page: " + page.getPageName());
writer.comment("Generated: " + new Date());
writer.begin("html");
renderInformalParameters(writer, cycle);
writer.println();
writer.begin("head");
writer.println();
writer.beginEmpty("meta");
writer.attribute("name", "generator");
writer.attribute("content", generatorContent);
writer.println();
if (getRenderContentType()) {
// This should not be necessary (the HTTP content type should be sufficient),
// but some browsers require it for some reason
writer.beginEmpty("meta");
writer.attribute("http-equiv", "Content-Type");
writer.attribute("content", writer.getContentType());
writer.println();
}
writer.begin("title");
writer.print(getTitle());
writer.end(); // title
writer.println();
IRender delegate = getDelegate();
if (delegate != null)
delegate.render(writer, cycle);
IAsset stylesheet = getStylesheet();
if (stylesheet != null)
writeStylesheetLink(writer, cycle, stylesheet);
Iterator i = Tapestry.coerceToIterator(getStylesheets());
if (i != null)
{
while (i.hasNext())
{
stylesheet = (IAsset) i.next();
writeStylesheetLink(writer, cycle, stylesheet);
}
}
writeRefresh(writer, cycle);
writer.end(); // head
}
// Render the body, the actual page content
renderBody(writer, cycle);
if (!rewinding)
{
writer.end(); // html
writer.println();
long endTime = System.currentTimeMillis();
writer.comment("Render time: ~ " + (endTime - startTime) + " ms");
}
}