public final void init(FilterConfig filterConfig) throws ServletException {
config = filterConfig;
ServletContext context = config.getServletContext();
String filterName = config.getFilterName();
SymbolProvider provider = new ServletContextSymbolProvider(context);
TapestryAppInitializer appInitializer = new TapestryAppInitializer(provider, filterName, "servlet");
appInitializer.addModules(provideExtraModuleDefs(context));
registry = appInitializer.getRegistry();
context.setAttribute(REGISTRY_CONTEXT_NAME, registry);
long start = appInitializer.getStartTime();
long toRegistry = appInitializer.getRegistryCreatedTime();
ServletApplicationInitializer ai = registry.getService("ServletApplicationInitializer",
ServletApplicationInitializer.class);
ai.initializeApplication(filterConfig.getServletContext());
registry.performRegistryStartup();
handler = registry.getService("HttpServletRequestHandler", HttpServletRequestHandler.class);
SymbolSource source = registry.getService("SymbolSource", SymbolSource.class);
init(registry);
long toFinish = System.currentTimeMillis();
StringBuilder buffer = new StringBuilder("Startup status:\n\n");
Formatter f = new Formatter(buffer);
f.format("Application '%s' (Tapestry version %s).\n\n" +
"Startup time: %,d ms to build IoC Registry, %,d ms overall.\n\n" +
"Startup services status:\n",
filterName,
source.valueForSymbol(SymbolConstants.TAPESTRY_VERSION),
toRegistry - start, toFinish - start);
int unrealized = 0;
ServiceActivityScoreboard scoreboard = registry
.getService(ServiceActivityScoreboard.class);
List< ServiceActivity > serviceActivity = scoreboard.getServiceActivity();
int longest = 0;
// One pass to find the longest name, and to count the unrealized services.
for (ServiceActivity activity : serviceActivity)
{
Status status = activity.getStatus();
longest = Math.max(longest, activity.getServiceId().length());
if (status == Status.DEFINED || status == Status.VIRTUAL) unrealized++;
}
String formatString = "%" + longest + "s: %s\n";
// A second pass to output all the services
for (ServiceActivity activity : serviceActivity)
{
f.format(formatString, activity.getServiceId(), activity.getStatus().name());
}
f.format("\n%4.2f%% unrealized services (%d/%d)\n", 100. * unrealized / serviceActivity.size(), unrealized,
serviceActivity.size());
logger.info(buffer.toString());
}
Initializes the filter using the TapestryAppInitializer . The application name is the capitalization of
the filter name (as specified in web.xml). |