@Override
  public BareJID getSeeOtherHostForJID(BareJID fromJID, Phase ph) {
    if (see_other_host_strategy == null) {
      if (log.isLoggable(Level.FINEST)) {
        log.finest("no see-other-host implementation set");
      }

      return null;
    }
    if (!see_other_host_strategy.isEnabled(vHostManager.getVHostItem(fromJID.getDomain()), ph)) {
      if (log.isLoggable(Level.FINEST)) {
        log.finest("see-other-host not enabled for the Phase: " + ph.toString());
      }

      return null;
    }

    BareJID see_other_host = see_other_host_strategy.findHostForJID(fromJID, getDefHostName());

    if (log.isLoggable(Level.FINEST)) {
      log.finest(
          "using = "
              + see_other_host_strategy.getClass().getCanonicalName()
              + "for jid = "
              + fromJID.toString()
              + " got = "
              + ((see_other_host != null) ? see_other_host.toString() : "null")
              + " in phase: "
              + ph.toString());
    }

    return ((see_other_host != null) && !see_other_host.equals(getDefHostName()))
        ? see_other_host
        : null;
  }
 @Override
 public List<Element> getDiscoItems(String node, JID jid, JID from) {
   if (isAdmin(from)) {
     if (getName().equals(jid.getLocalpart())) {
       return serviceEntity.getDiscoItems(node, jid.toString());
     } else {
       if (node == null) {
         return Arrays.asList(
             serviceEntity.getDiscoItem(null, BareJID.toString(getName(), jid.toString())));
       } else {
         return null;
       }
     }
   }
   return null;
 }