James Moger
2013-05-21 416614cdc35aff21281df7d1f359cd9f65d5af63
Allow clients to define supported transports
2 files modified
40 ■■■■ changed files
src/main/java/com/gitblit/models/GitClientApplication.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/panels/RepositoryUrlPanel.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/models/GitClientApplication.java
@@ -39,6 +39,7 @@
    public String cloneUrl;
    public String command;
    public String productUrl;
    public String [] transports;
    public String[] platforms;
    public AccessPermission minimumPermission;
    public boolean isActive;
@@ -60,6 +61,25 @@
        return false;
    }
    
    public boolean supportsTransport(String transportOrUrl) {
        if (ArrayUtils.isEmpty(transports)) {
            return true;
        }
        String scheme = transportOrUrl;
        if (transportOrUrl.indexOf(':') > -1) {
            // strip scheme
            scheme = transportOrUrl.substring(0, transportOrUrl.indexOf(':'));
        }
        for (String transport : transports) {
            if (transport.equalsIgnoreCase(scheme)) {
                return true;
            }
        }
        return false;
    }
    @Override
    public String toString() {
        return StringUtils.isEmpty(title) ? name : title;
src/main/java/com/gitblit/wicket/panels/RepositoryUrlPanel.java
@@ -228,18 +228,16 @@
                final GitClientApplication clientApp = item.getModelObject();
                // filter the urls for the client app
                List<RepositoryUrl> urls;
                if (clientApp.minimumPermission == null) {
                    // client app does not specify minimum access permission
                    urls = repositoryUrls;
                } else {
                    urls = new ArrayList<RepositoryUrl>();
                    for (RepositoryUrl repoUrl : repositoryUrls) {
                        if (repoUrl.permission == null) {
                            // external permissions, assume it is satisfactory
                List<RepositoryUrl> urls = new ArrayList<RepositoryUrl>();
                for (RepositoryUrl repoUrl : repositoryUrls) {
                    if (clientApp.minimumPermission == null || repoUrl.permission == null) {
                        // no minimum permission or external permissions, assume it is satisfactory
                        if (clientApp.supportsTransport(repoUrl.url)) {
                            urls.add(repoUrl);
                        } else if (repoUrl.permission.atLeast(clientApp.minimumPermission)) {
                            // repo url meets minimum permission requirement
                        }
                    } else if (repoUrl.permission.atLeast(clientApp.minimumPermission)) {
                        // repo url meets minimum permission requirement
                        if (clientApp.supportsTransport(repoUrl.url)) {
                            urls.add(repoUrl);
                        }
                    }