Пример #1
0
  /** {@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");
        }
      }
    }
  }