James Moger
2011-10-22 84c1d5c1527183a4e2830deab5b177d880914f1c
Documentation. Refactoring class names. Re-encapsulate settings.
5 files renamed
1 files added
11 files modified
303 ■■■■■ changed files
docs/01_setup.mkd 1 ●●●● patch | view | raw | blame | history
docs/02_rpc.mkd 39 ●●●●● patch | view | raw | blame | history
src/com/gitblit/Constants.java 2 ●●● patch | view | raw | blame | history
src/com/gitblit/GitBlit.java 26 ●●●●● patch | view | raw | blame | history
src/com/gitblit/RpcServlet.java 4 ●●●● patch | view | raw | blame | history
src/com/gitblit/client/EditUserDialog.java 13 ●●●● patch | view | raw | blame | history
src/com/gitblit/client/GitblitClient.java 21 ●●●● patch | view | raw | blame | history
src/com/gitblit/client/GitblitPanel.java 68 ●●●● patch | view | raw | blame | history
src/com/gitblit/client/RegistrationsDialog.java 6 ●●●● patch | view | raw | blame | history
src/com/gitblit/client/RegistrationsTableModel.java 4 ●●●● patch | view | raw | blame | history
src/com/gitblit/client/RepositoriesTableModel.java 6 ●●●● patch | view | raw | blame | history
src/com/gitblit/client/SettingsTableModel.java 14 ●●●● patch | view | raw | blame | history
src/com/gitblit/client/UsersTableModel.java 6 ●●●● patch | view | raw | blame | history
src/com/gitblit/models/ServerSettings.java 63 ●●●●● patch | view | raw | blame | history
src/com/gitblit/models/ServerStatus.java 10 ●●●● patch | view | raw | blame | history
src/com/gitblit/utils/RpcUtils.java 16 ●●●●● patch | view | raw | blame | history
tests/com/gitblit/tests/RpcTests.java 4 ●●●● patch | view | raw | blame | history
docs/01_setup.mkd
@@ -134,6 +134,7 @@
        showReadme = false
        federationStrategy = FEDERATE_THIS
        isFederated = false
        skipSizeCalculation = false
        federationSets = 
#### Repository Names
docs/02_rpc.mkd
@@ -30,7 +30,8 @@
<tr><td>LIST_FEDERATION_RESULTS</td><td>-</td><td><em>admin</em></td><td>-</td><td>List&lt;FederationModel&gt;</td></tr>
<tr><td>LIST_FEDERATION_PROPOSALS</td><td>-</td><td><em>admin</em></td><td>-</td><td>List&lt;FederationProposal&gt;</td></tr>
<tr><td>LIST_FEDERATION_SETS</td><td>-</td><td><em>admin</em></td><td>-</td><td>List&lt;FederationSet&gt;</td></tr>
<tr><td>LIST_SETTINGS</td><td>-</td><td><em>admin</em></td><td>-</td><td>Map&lt;String, SettingModel&gt;</td></tr>
<tr><td>LIST_SETTINGS</td><td>-</td><td><em>admin</em></td><td>-</td><td>ServerSettings (see example below)</td></tr>
<tr><td>LIST_STATUS</td><td>-</td><td><em>admin</em></td><td>-</td><td>ServerStatus (see example below)</td></tr>
</table>
### RPC/HTTP Response Codes
@@ -54,6 +55,8 @@
One obvious goal of a Gitblit RPC mechanism would be to have an EGit Feature that allows authentication and enumeration of Gitblit repositories from the Eclipse *Import...* menu.  Cloning (hopefully batch) would be delegated to EGit.
This particular project should not be difficult as the only external dependency for `com.gitblit.utils.RpcUtils` is [google-gson](http://google-gson.googlecode.com) which is already a dependency of the EGit/GitHub Mylyn feature.
One proposal from the EGit team is to define a common JSON RPC method for enumeration of repositories which can be implemented by Git hosts.  The EGit team would then implement the UI and the client-side enumeration code.  This idea was raised as part of this [feature request for EGit](https://bugs.eclipse.org/bugs/show_bug.cgi?id=361251).
Currently this project is in the planning stage.
@@ -80,6 +83,7 @@
      "libraries"
    ],
    "isFederated": false,
    "skipSizeCalculation": false,
    "size": "102 KB"
  },
  "https://localhost/git/libraries/smack.git": {
@@ -97,6 +101,7 @@
    "federationStrategy": "FEDERATE_THIS",
    "federationSets": [],
    "isFederated": false,
    "skipSizeCalculation": false,
    "size": "4.8 MB"
  }
}
@@ -157,9 +162,10 @@
### Example: LIST_SETTINGS
**url**: https://localhost/rpc?req=LIST_SETTINGS  
**response body**: Map&lt;String, SettingModel&gt;
**response body**: ServerSettings
<pre>
{
  "settings": {
  "web.siteName": {
    "name": "web.siteName",
    "currentValue": "",
@@ -181,4 +187,33 @@
    "spaceDelimited": false
  }
}
}
</pre>
### Example: LIST_STATUS
**url**: https://localhost/rpc?req=LIST_STATUS
**response body**: ServerStatus
<pre>
{
  "bootDate": "2011-10-22T12:13:00Z",
  "systemProperties": {
    "file.encoding": "Cp1252",
    "java.home": "C:\\Program Files\\Java\\jdk1.6.0_26\\jre",
    "java.io.tmpdir": "C:\\Users\\JAMESM~1\\AppData\\Local\\Temp\\",
    "java.runtime.name": "Java(TM) SE Runtime Environment",
    "java.runtime.version": "1.6.0_26-b03",
    "java.vendor": "Sun Microsystems Inc.",
    "java.version": "1.6.0_26",
    "java.vm.info": "mixed mode",
    "java.vm.name": "Java HotSpot(TM) 64-Bit Server VM",
    "java.vm.vendor": "Sun Microsystems Inc.",
    "java.vm.version": "20.1-b02",
    "os.arch": "amd64",
    "os.name": "Windows 7",
    "os.version": "6.1"
  },
  "heapAllocated": 128057344,
  "heapFree": 120399168,
  "heapSize": 1899560960
}
</pre>
src/com/gitblit/Constants.java
@@ -205,7 +205,7 @@
        LIST_USERS, CREATE_USER, EDIT_USER, DELETE_USER, LIST_REPOSITORY_MEMBERS,
        SET_REPOSITORY_MEMBERS, LIST_FEDERATION_REGISTRATIONS, LIST_FEDERATION_RESULTS,
        LIST_FEDERATION_PROPOSALS, LIST_FEDERATION_SETS, LIST_SETTINGS,
        LIST_SERVER_STATUS;
        LIST_STATUS;
        public static RpcRequest fromName(String name) {
            for (RpcRequest type : values()) {
src/com/gitblit/GitBlit.java
@@ -30,7 +30,6 @@
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
@@ -70,6 +69,7 @@
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.ServerStatus;
import com.gitblit.models.SettingModel;
import com.gitblit.models.ServerSettings;
import com.gitblit.models.UserModel;
import com.gitblit.utils.ByteFormat;
import com.gitblit.utils.FederationUtils;
@@ -123,7 +123,7 @@
    private IStoredSettings settings;
    private Map<String, SettingModel> settingModels;
    private ServerSettings settingsModel;
    private ServerStatus serverStatus;
@@ -1275,16 +1275,12 @@
    /**
     * Returns the descriptions/comments of the Gitblit config settings.
     * 
     * @return Map<String, SettingModel>
     * @return SettingsModel
     */
    public Map<String, SettingModel> getSettingModels() {
    public ServerSettings getSettingsModel() {
        // ensure that the current values are updated in the setting models
        for (String key : settings.getAllKeys(null)) {
            if (settingModels.containsKey(key)) {
                settingModels.get(key).currentValue = settings.getString(key, "");
            }
        }
        return settingModels;
        settingsModel.updateCurrentValues(settings);
        return settingsModel;
    }
    /**
@@ -1294,8 +1290,8 @@
     * 
     * @return Map<String, SettingModel>
     */
    private Map<String, SettingModel> loadSettingModels() {
        Map<String, SettingModel> map = new TreeMap<String, SettingModel>();
    private ServerSettings loadSettingModels() {
        ServerSettings settingsModel = new ServerSettings();
        try {
            // Read bundled Gitblit properties to extract setting descriptions.
            // This copy is pristine and only used for populating the setting
@@ -1337,7 +1333,7 @@
                        setting.defaultValue = kvp[1].trim();
                        setting.currentValue = setting.defaultValue;
                        setting.description = description.toString().trim();
                        map.put(key, setting);
                        settingsModel.add(setting);
                        description.setLength(0);
                        setting = new SettingModel();
                    }
@@ -1349,7 +1345,7 @@
        } catch (IOException e) {
            logger.error("Failed to load resource copy of gitblit.properties");
        }
        return map;
        return settingsModel;
    }
    /**
@@ -1409,7 +1405,7 @@
    @Override
    public void contextInitialized(ServletContextEvent contextEvent) {
        servletContext = contextEvent.getServletContext();
        settingModels = loadSettingModels();
        settingsModel = loadSettingModels();
        if (settings == null) {
            // Gitblit WAR is running in a servlet container
            WebXmlSettings webxmlSettings = new WebXmlSettings(contextEvent.getServletContext());
src/com/gitblit/RpcServlet.java
@@ -182,8 +182,8 @@
            }
        } else if (RpcRequest.LIST_SETTINGS.equals(reqType)) {
            // return the server's settings
            result = GitBlit.self().getSettingModels();
        } else if (RpcRequest.LIST_SERVER_STATUS.equals(reqType)) {
            result = GitBlit.self().getSettingsModel();
        } else if (RpcRequest.LIST_STATUS.equals(reqType)) {
            // return the server's status information
            result = GitBlit.self().getStatus();
        }
src/com/gitblit/client/EditUserDialog.java
@@ -29,7 +29,6 @@
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.swing.ImageIcon;
@@ -48,7 +47,7 @@
import com.gitblit.Constants.AccessRestrictionType;
import com.gitblit.Keys;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.SettingModel;
import com.gitblit.models.ServerSettings;
import com.gitblit.models.UserModel;
import com.gitblit.utils.StringUtils;
@@ -58,7 +57,7 @@
    private final UserModel user;
    private final Map<String, SettingModel> settings;
    private final ServerSettings settings;
    private boolean isCreate;
    
@@ -78,13 +77,13 @@
    private Set<String> usernames;
    public EditUserDialog(Map<String, SettingModel> settings) {
    public EditUserDialog(ServerSettings settings) {
        this(new UserModel(""), settings);
        this.isCreate = true;
        setTitle(Translation.get("gb.newUser"));        
    }
    public EditUserDialog(UserModel anUser, Map<String, SettingModel> settings) {
    public EditUserDialog(UserModel anUser, ServerSettings settings) {
        super();
        this.user = new UserModel("");
        this.settings = settings;
@@ -203,8 +202,8 @@
        }
        char[] pw = passwordField.getPassword();
        if (pw == null || pw.length < minLength) {
            error(MessageFormat.format(
                    "Password is too short. Minimum length is {0} characters.", minLength));
            error(MessageFormat.format("Password is too short. Minimum length is {0} characters.",
                    minLength));
            return false;
        }
        char[] cpw = confirmPasswordField.getPassword();
src/com/gitblit/client/GitblitClient.java
File was renamed from src/com/gitblit/client/GitblitModel.java
@@ -27,12 +27,19 @@
import com.gitblit.Keys;
import com.gitblit.models.FederationModel;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.ServerSettings;
import com.gitblit.models.ServerStatus;
import com.gitblit.models.SettingModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.RpcUtils;
public class GitblitModel implements Serializable {
/**
 * GitblitClient is a object that retrieves data from a Gitblit server, caches
 * it for local operations, and allows updating or creating Gitblit objects.
 *
 * @author James Moger
 *
 */
public class GitblitClient implements Serializable {
    private static final long serialVersionUID = 1L;
@@ -44,7 +51,7 @@
    private volatile boolean isAdmin;
    private volatile Map<String, SettingModel> settings;
    private volatile ServerSettings settings;
    private final List<RepositoryModel> allRepositories;
@@ -54,7 +61,7 @@
    private ServerStatus status;
    public GitblitModel(String url, String account, char[] password) {
    public GitblitClient(String url, String account, char[] password) {
        this.url = url;
        this.account = account;
        this.password = password;
@@ -87,10 +94,14 @@
        return account != null && account.equalsIgnoreCase(model.owner);
    }
    public Map<String, SettingModel> getSettings() {
    public ServerSettings getSettings() {
        return settings;
    }
    public ServerStatus getStatus() {
        return status;
    }
    public String getSettingDescription(String key) {
        return settings.get(key).description;
    }
src/com/gitblit/client/GitblitPanel.java
@@ -71,21 +71,21 @@
    private final Insets insets = new Insets(margin, margin, margin, margin);
    private GitblitModel gitblit;
    private GitblitClient gitblit;
    private JTabbedPane tabs;
    private JTable repositoriesTable;
    private RepositoriesModel repositoriesModel;
    private RepositoriesTableModel repositoriesModel;
    private JTable usersTable;
    private UsersModel usersModel;
    private UsersTableModel usersModel;
    private JTable settingsTable;
    private SettingsModel settingsModel;
    private SettingsTableModel settingsModel;
    private JButton createRepository;
@@ -99,11 +99,11 @@
    private DefaultTableCellRenderer sizeRenderer;
    private TableRowSorter<RepositoriesModel> defaultRepositoriesSorter;
    private TableRowSorter<RepositoriesTableModel> defaultRepositoriesSorter;
    private TableRowSorter<UsersModel> defaultUsersSorter;
    private TableRowSorter<UsersTableModel> defaultUsersSorter;
    private TableRowSorter<SettingsModel> defaultSettingsSorter;
    private TableRowSorter<SettingsTableModel> defaultSettingsSorter;
    private JButton editRepository;
@@ -112,7 +112,7 @@
    }
    public GitblitPanel(String url, String account, char[] password) {
        this.gitblit = new GitblitModel(url, account, password);
        this.gitblit = new GitblitClient(url, account, password);
        tabs = new JTabbedPane(JTabbedPane.BOTTOM);
        tabs.addTab(Translation.get("gb.repositories"), createRepositoriesPanel());
@@ -180,17 +180,17 @@
        ownerRenderer.setForeground(Color.gray);
        ownerRenderer.setHorizontalAlignment(SwingConstants.CENTER);
        repositoriesModel = new RepositoriesModel();
        defaultRepositoriesSorter = new TableRowSorter<RepositoriesModel>(repositoriesModel);
        repositoriesModel = new RepositoriesTableModel();
        defaultRepositoriesSorter = new TableRowSorter<RepositoriesTableModel>(repositoriesModel);
        repositoriesTable = Utils.newTable(repositoriesModel);
        repositoriesTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
        repositoriesTable.setRowSorter(defaultRepositoriesSorter);
        repositoriesTable.getRowSorter().toggleSortOrder(RepositoriesModel.Columns.Name.ordinal());
        repositoriesTable.getRowSorter().toggleSortOrder(RepositoriesTableModel.Columns.Name.ordinal());
        setRepositoryRenderer(RepositoriesModel.Columns.Name, nameRenderer, -1);
        setRepositoryRenderer(RepositoriesModel.Columns.Indicators, typeRenderer, 100);
        setRepositoryRenderer(RepositoriesModel.Columns.Owner, ownerRenderer, -1);
        setRepositoryRenderer(RepositoriesModel.Columns.Size, sizeRenderer, 60);
        setRepositoryRenderer(RepositoriesTableModel.Columns.Name, nameRenderer, -1);
        setRepositoryRenderer(RepositoriesTableModel.Columns.Indicators, typeRenderer, 100);
        setRepositoryRenderer(RepositoriesTableModel.Columns.Owner, ownerRenderer, -1);
        setRepositoryRenderer(RepositoriesTableModel.Columns.Size, sizeRenderer, 60);
        repositoriesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
@@ -205,7 +205,7 @@
                if (selected) {
                    int viewRow = repositoriesTable.getSelectedRow();
                    int modelRow = repositoriesTable.convertRowIndexToModel(viewRow);
                    RepositoryModel model = ((RepositoriesModel) repositoriesTable.getModel()).list
                    RepositoryModel model = ((RepositoriesTableModel) repositoriesTable.getModel()).list
                            .get(modelRow);
                    editRepository.setEnabled(singleSelection
                            && (gitblit.allowAdmin() || gitblit.isOwner(model)));
@@ -266,7 +266,7 @@
        return repositoriesPanel;
    }
    private void setRepositoryRenderer(RepositoriesModel.Columns col, TableCellRenderer renderer,
    private void setRepositoryRenderer(RepositoriesTableModel.Columns col, TableCellRenderer renderer,
            int maxWidth) {
        String name = repositoriesTable.getColumnName(col.ordinal());
        repositoriesTable.getColumn(name).setCellRenderer(renderer);
@@ -307,14 +307,14 @@
            }
        });
        usersModel = new UsersModel();
        defaultUsersSorter = new TableRowSorter<UsersModel>(usersModel);
        usersModel = new UsersTableModel();
        defaultUsersSorter = new TableRowSorter<UsersTableModel>(usersModel);
        usersTable = Utils.newTable(usersModel);
        String name = usersTable.getColumnName(UsersModel.Columns.Name.ordinal());
        String name = usersTable.getColumnName(UsersTableModel.Columns.Name.ordinal());
        usersTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
        usersTable.getColumn(name).setCellRenderer(nameRenderer);
        usersTable.setRowSorter(defaultUsersSorter);
        usersTable.getRowSorter().toggleSortOrder(UsersModel.Columns.Name.ordinal());
        usersTable.getRowSorter().toggleSortOrder(UsersTableModel.Columns.Name.ordinal());
        usersTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
@@ -381,15 +381,15 @@
    private JPanel createSettingsPanel() {
        final SettingPanel settingPanel = new SettingPanel();
        settingsModel = new SettingsModel();
        defaultSettingsSorter = new TableRowSorter<SettingsModel>(settingsModel);
        settingsModel = new SettingsTableModel();
        defaultSettingsSorter = new TableRowSorter<SettingsTableModel>(settingsModel);
        settingsTable = Utils.newTable(settingsModel);
        settingsTable.setDefaultRenderer(SettingModel.class, new SettingCellRenderer());
        String name = settingsTable.getColumnName(UsersModel.Columns.Name.ordinal());
        String name = settingsTable.getColumnName(UsersTableModel.Columns.Name.ordinal());
        settingsTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
        settingsTable.getColumn(name).setCellRenderer(nameRenderer);
        settingsTable.setRowSorter(defaultSettingsSorter);
        settingsTable.getRowSorter().toggleSortOrder(SettingsModel.Columns.Name.ordinal());
        settingsTable.getRowSorter().toggleSortOrder(SettingsTableModel.Columns.Name.ordinal());
        settingsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
            @Override
@@ -496,8 +496,8 @@
            repositoriesTable.setRowSorter(defaultRepositoriesSorter);
            return;
        }
        RowFilter<RepositoriesModel, Object> containsFilter = new RowFilter<RepositoriesModel, Object>() {
            public boolean include(Entry<? extends RepositoriesModel, ? extends Object> entry) {
        RowFilter<RepositoriesTableModel, Object> containsFilter = new RowFilter<RepositoriesTableModel, Object>() {
            public boolean include(Entry<? extends RepositoriesTableModel, ? extends Object> entry) {
                for (int i = entry.getValueCount() - 1; i >= 0; i--) {
                    if (entry.getStringValue(i).toLowerCase().contains(fragment.toLowerCase())) {
                        return true;
@@ -506,7 +506,7 @@
                return false;
            }
        };
        TableRowSorter<RepositoriesModel> sorter = new TableRowSorter<RepositoriesModel>(
        TableRowSorter<RepositoriesTableModel> sorter = new TableRowSorter<RepositoriesTableModel>(
                repositoriesModel);
        sorter.setRowFilter(containsFilter);
        repositoriesTable.setRowSorter(sorter);
@@ -517,8 +517,8 @@
            usersTable.setRowSorter(defaultUsersSorter);
            return;
        }
        RowFilter<UsersModel, Object> containsFilter = new RowFilter<UsersModel, Object>() {
            public boolean include(Entry<? extends UsersModel, ? extends Object> entry) {
        RowFilter<UsersTableModel, Object> containsFilter = new RowFilter<UsersTableModel, Object>() {
            public boolean include(Entry<? extends UsersTableModel, ? extends Object> entry) {
                for (int i = entry.getValueCount() - 1; i >= 0; i--) {
                    if (entry.getStringValue(i).toLowerCase().contains(fragment.toLowerCase())) {
                        return true;
@@ -527,7 +527,7 @@
                return false;
            }
        };
        TableRowSorter<UsersModel> sorter = new TableRowSorter<UsersModel>(usersModel);
        TableRowSorter<UsersTableModel> sorter = new TableRowSorter<UsersTableModel>(usersModel);
        sorter.setRowFilter(containsFilter);
        usersTable.setRowSorter(sorter);
    }
@@ -537,8 +537,8 @@
            settingsTable.setRowSorter(defaultSettingsSorter);
            return;
        }
        RowFilter<SettingsModel, Object> containsFilter = new RowFilter<SettingsModel, Object>() {
            public boolean include(Entry<? extends SettingsModel, ? extends Object> entry) {
        RowFilter<SettingsTableModel, Object> containsFilter = new RowFilter<SettingsTableModel, Object>() {
            public boolean include(Entry<? extends SettingsTableModel, ? extends Object> entry) {
                for (int i = entry.getValueCount() - 1; i >= 0; i--) {
                    if (entry.getStringValue(i).toLowerCase().contains(fragment.toLowerCase())) {
                        return true;
@@ -547,7 +547,7 @@
                return false;
            }
        };
        TableRowSorter<SettingsModel> sorter = new TableRowSorter<SettingsModel>(settingsModel);
        TableRowSorter<SettingsTableModel> sorter = new TableRowSorter<SettingsTableModel>(settingsModel);
        sorter.setRowFilter(containsFilter);
        settingsTable.setRowSorter(sorter);
    }
src/com/gitblit/client/RegistrationsDialog.java
@@ -56,7 +56,7 @@
    private JTable registrationsTable;
    private RegistrationsModel model;
    private RegistrationsTableModel model;
    public RegistrationsDialog(List<GitblitRegistration> registrations,
            RegistrationListener listener) {
@@ -83,11 +83,11 @@
    private void initialize() {
        NameRenderer nameRenderer = new NameRenderer();
        model = new RegistrationsModel(registrations);
        model = new RegistrationsTableModel(registrations);
        registrationsTable = Utils.newTable(model);
        registrationsTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
        String id = registrationsTable.getColumnName(RegistrationsModel.Columns.Name.ordinal());
        String id = registrationsTable.getColumnName(RegistrationsTableModel.Columns.Name.ordinal());
        registrationsTable.getColumn(id).setCellRenderer(nameRenderer);
        registrationsTable.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
src/com/gitblit/client/RegistrationsTableModel.java
File was renamed from src/com/gitblit/client/RegistrationsModel.java
@@ -27,7 +27,7 @@
 * @author James Moger
 * 
 */
public class RegistrationsModel extends AbstractTableModel {
public class RegistrationsTableModel extends AbstractTableModel {
    private static final long serialVersionUID = 1L;
@@ -42,7 +42,7 @@
        }
    }
    public RegistrationsModel(List<GitblitRegistration> list) {
    public RegistrationsTableModel(List<GitblitRegistration> list) {
        this.list = list;
        Collections.sort(this.list);
    }
src/com/gitblit/client/RepositoriesTableModel.java
File was renamed from src/com/gitblit/client/RepositoriesModel.java
@@ -30,7 +30,7 @@
 * @author James Moger
 * 
 */
public class RepositoriesModel extends AbstractTableModel {
public class RepositoriesTableModel extends AbstractTableModel {
    private static final long serialVersionUID = 1L;
@@ -45,11 +45,11 @@
        }
    }
    public RepositoriesModel() {
    public RepositoriesTableModel() {
        this(new ArrayList<RepositoryModel>());
    }
    public RepositoriesModel(List<RepositoryModel> repositories) {
    public RepositoriesTableModel(List<RepositoryModel> repositories) {
        this.list = repositories;
        Collections.sort(this.list);
    }
src/com/gitblit/client/SettingsTableModel.java
File was renamed from src/com/gitblit/client/SettingsModel.java
@@ -18,10 +18,10 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import javax.swing.table.AbstractTableModel;
import com.gitblit.models.ServerSettings;
import com.gitblit.models.SettingModel;
/**
@@ -30,11 +30,11 @@
 * @author James Moger
 * 
 */
public class SettingsModel extends AbstractTableModel {
public class SettingsTableModel extends AbstractTableModel {
    private static final long serialVersionUID = 1L;
    Map<String, SettingModel> settings;
    ServerSettings settings;
    List<String> keys;
@@ -47,20 +47,20 @@
        }
    }
    public SettingsModel() {
    public SettingsTableModel() {
        this(null);
    }
    public SettingsModel(Map<String, SettingModel> settings) {
    public SettingsTableModel(ServerSettings settings) {
        setSettings(settings);
    }
    public void setSettings(Map<String, SettingModel> settings) {
    public void setSettings(ServerSettings settings) {
        this.settings = settings;
        if (settings == null) {
            keys = new ArrayList<String>();
        } else {
            keys = new ArrayList<String>(settings.keySet());
            keys = new ArrayList<String>(settings.getKeys());
            Collections.sort(keys);
        }
    }
src/com/gitblit/client/UsersTableModel.java
File was renamed from src/com/gitblit/client/UsersModel.java
@@ -29,7 +29,7 @@
 * @author James Moger
 * 
 */
public class UsersModel extends AbstractTableModel {
public class UsersTableModel extends AbstractTableModel {
    private static final long serialVersionUID = 1L;
@@ -44,11 +44,11 @@
        }
    }
    public UsersModel() {
    public UsersTableModel() {
        this(new ArrayList<UserModel>());
    }
    public UsersModel(List<UserModel> users) {
    public UsersTableModel(List<UserModel> users) {
        this.list = users;
        Collections.sort(this.list);
    }
src/com/gitblit/models/ServerSettings.java
New file
@@ -0,0 +1,63 @@
/*
 * Copyright 2011 gitblit.com.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.gitblit.models;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import com.gitblit.IStoredSettings;
/**
 * Server settings represents the settings of the Gitblit server including all
 * setting metadata such as name, current value, default value, description, and
 * directives. It is a model class for serialization and presentation, but not
 * for persistence.
 *
 * @author James Moger
 */
public class ServerSettings implements Serializable {
    private final Map<String, SettingModel> settings;
    private static final long serialVersionUID = 1L;
    public ServerSettings() {
        settings = new TreeMap<String, SettingModel>();
    }
    public List<String> getKeys() {
        return new ArrayList<String>(settings.keySet());
    }
    public void add(SettingModel setting) {
        settings.put(setting.name, setting);
    }
    public SettingModel get(String key) {
        return settings.get(key);
    }
    public void updateCurrentValues(IStoredSettings storedSettings) {
        for (String key : storedSettings.getAllKeys(null)) {
            if (settings.containsKey(key)) {
                settings.get(key).currentValue = storedSettings.getString(key, "");
            }
        }
    }
}
src/com/gitblit/models/ServerStatus.java
@@ -17,12 +17,12 @@
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
/**
 * ServerStatus encapsulates runtime status information about the server
 * including the system environment.
 * including some information about the system environment.
 * 
 * @author James Moger
 * 
@@ -33,9 +33,9 @@
    public final Date bootDate;
    
    public final long heapSize;
    public final Map<String, String> systemProperties;
    public final long heapSize;
    
    public volatile long heapAllocated;
    
@@ -46,7 +46,7 @@
        
        heapSize = Runtime.getRuntime().maxMemory();
        
        systemProperties = new HashMap<String, String>();
        systemProperties = new TreeMap<String, String>();
        put("file.encoding");
        put("java.home");
        put("java.io.tmpdir");
src/com/gitblit/utils/RpcUtils.java
@@ -29,7 +29,7 @@
import com.gitblit.models.FederationSet;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.ServerStatus;
import com.gitblit.models.SettingModel;
import com.gitblit.models.ServerSettings;
import com.gitblit.models.UserModel;
import com.google.gson.reflect.TypeToken;
@@ -57,9 +57,6 @@
    }.getType();
    private static final Type SETS_TYPE = new TypeToken<Collection<FederationSet>>() {
    }.getType();
    private static final Type SETTINGS_TYPE = new TypeToken<Map<String, SettingModel>>() {
    }.getType();
    /**
@@ -341,14 +338,13 @@
     * @param serverUrl
     * @param account
     * @param password
     * @return an Map<String, SettingModel> object
     * @return an Settings object
     * @throws IOException
     */
    public static Map<String, SettingModel> getSettings(String serverUrl, String account,
            char[] password) throws IOException {
    public static ServerSettings getSettings(String serverUrl, String account, char[] password)
            throws IOException {
        String url = asLink(serverUrl, RpcRequest.LIST_SETTINGS);
        Map<String, SettingModel> settings = JsonUtils.retrieveJson(url, SETTINGS_TYPE, account,
                password);
        ServerSettings settings = JsonUtils.retrieveJson(url, ServerSettings.class, account, password);
        return settings;
    }
@@ -363,7 +359,7 @@
     */
    public static ServerStatus getStatus(String serverUrl, String account, char[] password)
            throws IOException {
        String url = asLink(serverUrl, RpcRequest.LIST_SERVER_STATUS);
        String url = asLink(serverUrl, RpcRequest.LIST_STATUS);
        ServerStatus status = JsonUtils.retrieveJson(url, ServerStatus.class, account, password);
        return status;
    }
tests/com/gitblit/tests/RpcTests.java
@@ -27,8 +27,8 @@
import com.gitblit.models.FederationProposal;
import com.gitblit.models.FederationSet;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.ServerSettings;
import com.gitblit.models.ServerStatus;
import com.gitblit.models.SettingModel;
import com.gitblit.models.UserModel;
import com.gitblit.utils.RpcUtils;
@@ -207,7 +207,7 @@
    }
    public void testSettings() throws Exception {
        Map<String, SettingModel> settings = RpcUtils.getSettings(url, account, password.toCharArray());
        ServerSettings settings = RpcUtils.getSettings(url, account, password.toCharArray());
        assertTrue("No settings were retrieved!", settings != null);
    }