request.setMethod(site.getHostname(environment).getURL().getProtocol());
request.setServletPath("");
// Prepare a fake page in order to prevent erratic behavior during
// precompilation
Page page = new MockPageImpl(site);
Pagelet pagelet = null;
for (Module m : site.getModules()) {
if (m.getRenderers().length > 0) {
PageletRenderer r = m.getRenderers()[0];
PageletURI pageletURI = new PageletURIImpl(page.getURI(), PageTemplate.DEFAULT_STAGE, 0);
pagelet = new PageletImpl(pageletURI, m.getIdentifier(), r.getIdentifier());
}
}
// Collect all renderers from modules and ask for precompilation
List<URL> rendererUrls = new ArrayList<URL>();
for (Module m : site.getModules()) {
if (!m.isEnabled())
break;
for (PageletRenderer p : m.getRenderers()) {
if (p.getRenderer() != null)
rendererUrls.add(p.getRenderer());
if (p.getRenderer(RendererType.Feed.name()) != null)
rendererUrls.add(p.getRenderer(RendererType.Feed.name()));
if (p.getRenderer(RendererType.Search.name()) != null)
rendererUrls.add(p.getRenderer(RendererType.Search.name()));
if (p.getEditor() != null)
rendererUrls.add(p.getEditor());
}
}
// Collect all site templates and ask for precompilation
for (PageTemplate t : site.getTemplates()) {
if (t.getRenderer() != null)
rendererUrls.add(t.getRenderer());
}
if (rendererUrls.size() < 1) {
logger.debug("No java server pages found to precompile for {}", site);
return;
}
// Make sure there is a user
security.setUser(new Guest(site.getIdentifier()));
security.setSite(site);
logger.info("Precompiling java server pages for '{}'", site);
int errorCount = 0;
Iterator<URL> rendererIterator = rendererUrls.iterator();
while (keepGoing && rendererIterator.hasNext()) {
MockHttpServletResponse response = new MockHttpServletResponse();
URL entry = rendererIterator.next();
String path = entry.getPath();
String pathInfo = path.substring(path.indexOf(site.getIdentifier()) + site.getIdentifier().length());
request.setPathInfo(pathInfo);
request.setRequestURI(pathInfo);
request.setAttribute(WebloungeRequest.PAGE, page);
request.setAttribute(WebloungeRequest.COMPOSER, page.getComposer(PageTemplate.DEFAULT_STAGE));
if (pagelet != null)
request.setAttribute(WebloungeRequest.PAGELET, pagelet);
try {
logger.debug("Precompiling {}:/{}", site, pathInfo);