/** {@inheritDoc} */ public void mountPages(final WebApplication webApplication) { final Logger log = ShopCodeContext.getLog(this); for (Map.Entry<String, Map<String, Class<IRequestablePage>>> pageMappingEntry : pageMapping.entrySet()) { final String url = pageMappingEntry.getKey(); final Map<String, Class<IRequestablePage>> pages = pageMappingEntry.getValue(); final ClassProvider classProvider; if (pages.size() == 1) { // there is only default mapping for this url classProvider = ClassProvider.of(pages.entrySet().iterator().next().getValue()); if (log.isInfoEnabled()) { log.info("Mounting url '{}' to page '{}'", url, classProvider.get().getCanonicalName()); } } else { // more than one mapping - need a theme dependent class provider classProvider = new ThemePageProvider(pages); if (log.isInfoEnabled()) { log.info("Mounting url '{}' to pages:", url); for (final Map.Entry<String, Class<IRequestablePage>> entry : pages.entrySet()) { log.info("theme: '{}', page: '{}'", entry.getKey(), entry.getValue()); } } } if (encoderEnabledUrls.contains(url)) { webApplication.mount(new MountedMapper(url, classProvider, encoder)); } else { webApplication.mount(new MountedMapper(url, classProvider)); } if (loginUrl.equals(url)) { loginPage = classProvider; if (log.isInfoEnabled()) { log.info("This is a login url"); } } else if ("/".equals(url)) { homePage = classProvider; if (log.isInfoEnabled()) { log.info("This is a home url"); } } } }