return tracker.invoke("Constructing instance of page class " + pageClassName, new Invokable<Page>()
{
public Page invoke()
{
Page page = new PageImpl(logicalPageName, selector, persistentFieldManager, perThreadManager);
ComponentAssembler assembler = getAssembler(pageClassName, selector);
ComponentPageElement rootElement = assembler.assembleRootComponent(page);
page.setRootElement(rootElement);
// The page is *loaded* before it is attached to the request.
// This is to help ensure that no client-specific information leaks
// into the page's default state.
page.loaded();
return page;
}
});
}