/**
   * Format the to site email address.
   *
   * @param event The event that matched criteria to cause the notification.
   * @return the email address attribution for the site.
   */
  protected String getToSite(Event event) {
    Reference ref = EntityManager.newReference(event.getResource());

    // use either the configured site, or if not configured, the site (context) of the resource
    String siteId = (getSite() != null) ? getSite() : ref.getContext();

    // get a site title
    String title = siteId;
    String email = null;
    try {
      Site site = SiteService.getSite(siteId);
      title = site.getTitle();

      // check that the channel exists
      String channel = "/mailarchive/channel/" + siteId + "/main";
      EntityManager.newReference(channel);

      // find the alias for this site's mail channel
      List<Alias> all = AliasService.getAliases(channel);
      if (!all.isEmpty()) email = ((Alias) all.get(0)).getId();
    } catch (Exception ignore) {
    }

    // if for any reason we did not find an email, setup for the no-reply for email
    if (email == null) email = "no-reply";

    String rv =
        "\"" + title + "\" <" + email + "@" + ServerConfigurationService.getServerName() + ">";

    return rv;
  }
 public String lookupPageToAlias(String siteId, SitePage page) {
   // Shortcut if we aren't using page aliases.
   if (!lookForPageAliases) {
     return null;
   }
   String alias = null;
   List<Alias> aliases = AliasService.getAliases(page.getReference());
   if (aliases.size() > 0) {
     if (aliases.size() > 1 && log.isWarnEnabled()) {
       log.warn("More than one alias for: " + siteId + ":" + page.getId());
       // Sort on ID so it is consistent in the alias it uses.
       Collections.sort(aliases, getAliasComparator());
     }
     alias = aliases.get(0).getId();
     alias = parseAlias(alias, siteId);
   }
   return alias;
 }
 public SitePage lookupAliasToPage(String alias, Site site) {
   // Shortcut if we aren't using page aliases.
   if (!lookForPageAliases) {
     return null;
   }
   SitePage page = null;
   if (alias != null && alias.length() > 0) {
     try {
       // Use page#{siteId}:{pageAlias} So we can scan for fist colon and alias can contain any
       // character
       String refString = AliasService.getTarget(buildAlias(alias, site));
       String aliasPageId = EntityManager.newReference(refString).getId();
       page = (SitePage) site.getPage(aliasPageId);
     } catch (IdUnusedException e) {
       if (log.isDebugEnabled()) {
         log.debug("Alias does not resolve " + e.getMessage());
       }
     }
   }
   return page;
 }