James Moger
2011-10-26 8b76369fb44bfd863b27bcede453d676905f52e5
src/com/gitblit/client/GitblitManager.java
@@ -29,6 +29,7 @@
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import java.net.ConnectException;
import java.text.MessageFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -64,6 +65,7 @@
import org.eclipse.jgit.util.FS;
import com.gitblit.Constants;
import com.gitblit.GitBlitException.ForbiddenException;
import com.gitblit.utils.StringUtils;
/**
@@ -234,6 +236,7 @@
            passwordField.getPassword());
      if (!StringUtils.isEmpty(originalName) && !originalName.equals(reg.name)) {
         // delete old registration
         registrations.remove(originalName);
         try {
            StoredConfig config = getConfig();
            config.unsetSection("servers", originalName);
@@ -271,7 +274,19 @@
               registrations.put(reg.name, reg);
               rebuildRecentMenu();
            } catch (Throwable t) {
               Utils.showException(GitblitManager.this, t);
               Throwable cause = t.getCause();
               if (cause instanceof ConnectException) {
                  JOptionPane.showMessageDialog(GitblitManager.this, cause.getMessage(),
                        Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
               } else if (cause instanceof ForbiddenException) {
                  JOptionPane
                        .showMessageDialog(
                              GitblitManager.this,
                              "This Gitblit server does not allow RPC Management or Administration",
                              Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
               } else {
                  Utils.showException(GitblitManager.this, t);
               }
            } finally {
               setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
            }
@@ -293,8 +308,11 @@
      if (list.size() > maxRecentCount) {
         list = list.subList(0, maxRecentCount);
      }
      for (final GitblitRegistration reg : list) {
      for (int i = 0; i < list.size(); i++) {
         final GitblitRegistration reg = list.get(i);
         JMenuItem item = new JMenuItem(reg.name, icon);
         item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1 + i, KeyEvent.CTRL_DOWN_MASK,
               false));
         item.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
               login(reg);
@@ -312,9 +330,14 @@
            Date lastLogin = dateFormat.parse(config.getString("servers", server, "lastLogin"));
            String url = config.getString("servers", server, "url");
            String account = config.getString("servers", server, "account");
            // FIXME this is pretty lame
            char[] password = new String(Base64.decode(config.getString("servers", server,
                  "password"))).toCharArray();
            char[] password;
            String pw = config.getString("servers", server, "password");
            if (StringUtils.isEmpty(pw)) {
               password = new char[0];
            } else {
               // FIXME this is pretty lame
               password = new String(Base64.decode(pw)).toCharArray();
            }
            GitblitRegistration reg = new GitblitRegistration(server, url, account, password);
            reg.lastLogin = lastLogin;
            registrations.put(reg.name, reg);
@@ -345,6 +368,7 @@
         StoredConfig config = getConfig();
         for (GitblitRegistration reg : list) {
            config.unsetSection("servers", reg.name);
            registrations.remove(reg.name);
         }
         config.save();
         success = true;