/** Adds the {@link EnterXMPPAccountWizardPage}'s account data to the {@link XMPPAccountStore}. */
  private void addXMPPAccount() {

    if (!enterXMPPAccountWizardPage.isXMPPAccountCreated()) {
      JID jid = enterXMPPAccountWizardPage.getJID();

      String username = jid.getName();
      String password = enterXMPPAccountWizardPage.getPassword();
      String domain = jid.getDomain().toLowerCase();
      String server = enterXMPPAccountWizardPage.getServer();

      int port;

      if (enterXMPPAccountWizardPage.getPort().length() != 0)
        port = Integer.valueOf(enterXMPPAccountWizardPage.getPort());
      else port = 0;

      boolean useTLS = enterXMPPAccountWizardPage.isUsingTLS();
      boolean useSASL = enterXMPPAccountWizardPage.isUsingSASL();

      accountStore.createAccount(username, password, domain, server, port, useTLS, useSASL);
    }

    if (accountStore.getAllAccounts().size() == 1
        && store.getBoolean(PreferenceConstants.AUTO_CONNECT))
      ThreadUtils.runSafeAsync(
          "dpp-connect-demand",
          LOG,
          new Runnable() {
            @Override
            public void run() {
              connectionHandler.connect(accountStore.getActiveAccount(), false);
            }
          });
  }
 /** @review runSafe OK */
 @Override
 public void run() {
   ThreadUtils.runSafeSync(
       LOG,
       new Runnable() {
         @Override
         public void run() {
           runDeleteAction();
         }
       });
 }
  /**
   * Query the given {@linkplain JID} for the requested feature. The JID may be non resource
   * qualified in which case all presences belonging to that JID are queried.
   *
   * <p>All registered {@linkplain #addDiscoveryManagerListener(DiscoveryManagerListener) listeners}
   * will be notified about the result. The request may be performed asynchronously in which case
   * the caller must ensure that a listener has already been added to retrieve the results.
   *
   * <p><b>Please note the return value: <code>if(queryFeatureSupport(foo, bar, async)) ... </code>
   * is likely to produce a {@link NullPointerException NPE}.</b>
   *
   * @param jid {@link JID} to query support for
   * @param namespace the namespace of the feature
   * @param async if <code>true</code> the request will be performed asynchronously
   * @return <code>true</code> if the given JID supports the feature or <code>false</code> if the
   *     given JID does not support the feature or <code>null</code> if the query fails or is
   *     performed asynchronously
   */
  public Boolean queryFeatureSupport(final JID jid, final String namespace, boolean async) {
    checkJID(jid);

    if (!async) return queryFeatureSupport(jid, namespace);

    threadPoolExecutor.execute(
        ThreadUtils.wrapSafe(
            LOG,
            new Runnable() {
              @Override
              public void run() {
                queryFeatureSupport(jid, namespace);
              }
            }));

    return null;
  }