public String handle(PageRequest request) throws PageAction {
   long startTime = System.currentTimeMillis();
   // create a context for processing this page
   PageContext context = new PageContext(request);
   context.setMessageSource(messageSource);
   context.setPageFactory(this);
   context.setFragmentFactory(fragmentFactory);
   context.setExtensionManager(extensionManager);
   mapInternalPageName(request);
   if (modelConfigurators != null) {
     for (PageModelConfigurator pageModelConfigurator : modelConfigurators) {
       pageModelConfigurator.configureModel(context);
     }
   }
   String result = process(context);
   log.info(
       ">>> Page >>> handled "
           + request
           + " in "
           + (System.currentTimeMillis() - startTime)
           + " ms");
   return result;
 }