Example usage for org.eclipse.jgit.lib StoredConfig getSubsections

List of usage examples for org.eclipse.jgit.lib StoredConfig getSubsections

Introduction

In this page you can find the example usage for org.eclipse.jgit.lib StoredConfig getSubsections.

Prototype

public Set<String> getSubsections(String section) 

Source Link

Document

Get set of all subsections of specified section within this configuration and its base configuration

Usage

From source file:com.gitblit.client.GitblitManager.java

License:Apache License

private void loadRegistrations() {
    try {//from   www . j av  a 2  s. c o  m
        StoredConfig config = getConfig();
        Set<String> servers = config.getSubsections(SERVER);
        for (String server : servers) {
            Date lastLogin = new Date(0);
            String date = config.getString(SERVER, server, "lastLogin");
            if (!StringUtils.isEmpty(date)) {
                lastLogin = dateFormat.parse(date);
            }
            String url = config.getString(SERVER, server, "url");
            String account = config.getString(SERVER, server, "account");
            char[] password;
            String pw = config.getString(SERVER, server, "password");
            if (StringUtils.isEmpty(pw)) {
                password = new char[0];
            } else {
                password = new String(Base64.decode(pw)).toCharArray();
            }
            GitblitRegistration reg = new GitblitRegistration(server, url, account, password) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void cacheFeeds() {
                    writeFeedCache(this);
                }
            };
            String[] feeds = config.getStringList(SERVER, server, FEED);
            if (feeds != null) {
                // deserialize the field definitions
                for (String definition : feeds) {
                    FeedModel feed = new FeedModel(definition);
                    reg.feeds.add(feed);
                }
            }
            reg.lastLogin = lastLogin;
            loadFeedCache(reg);
            registrations.put(reg.name, reg);
        }
    } catch (Throwable t) {
        Utils.showException(GitblitManager.this, t);
    }
}

From source file:com.gitblit.ConfigUserService.java

License:Apache License

/**
 * Reads the realm file and rebuilds the in-memory lookup tables.
 *//*from   w  w  w .j  a  v  a  2  s .c  o m*/
protected synchronized void read() {
    if (realmFile.exists() && (forceReload || (realmFile.lastModified() != lastModified))) {
        forceReload = false;
        lastModified = realmFile.lastModified();
        users.clear();
        cookies.clear();
        teams.clear();

        try {
            StoredConfig config = new FileBasedConfig(realmFile, FS.detect());
            config.load();
            Set<String> usernames = config.getSubsections(USER);
            for (String username : usernames) {
                UserModel user = new UserModel(username.toLowerCase());
                user.password = config.getString(USER, username, PASSWORD);
                user.displayName = config.getString(USER, username, DISPLAYNAME);
                user.emailAddress = config.getString(USER, username, EMAILADDRESS);
                user.accountType = AccountType.fromString(config.getString(USER, username, ACCOUNTTYPE));
                user.disabled = config.getBoolean(USER, username, DISABLED, false);
                user.organizationalUnit = config.getString(USER, username, ORGANIZATIONALUNIT);
                user.organization = config.getString(USER, username, ORGANIZATION);
                user.locality = config.getString(USER, username, LOCALITY);
                user.stateProvince = config.getString(USER, username, STATEPROVINCE);
                user.countryCode = config.getString(USER, username, COUNTRYCODE);
                user.cookie = config.getString(USER, username, COOKIE);
                if (StringUtils.isEmpty(user.cookie) && !StringUtils.isEmpty(user.password)) {
                    user.cookie = user.createCookie();
                }

                // preferences
                user.getPreferences().setLocale(config.getString(USER, username, LOCALE));
                user.getPreferences().setEmailMeOnMyTicketChanges(
                        config.getBoolean(USER, username, EMAILONMYTICKETCHANGES, true));
                user.getPreferences()
                        .setTransport(Transport.fromString(config.getString(USER, username, TRANSPORT)));

                // user roles
                Set<String> roles = new HashSet<String>(
                        Arrays.asList(config.getStringList(USER, username, ROLE)));
                user.canAdmin = roles.contains(Role.ADMIN.getRole());
                user.canFork = roles.contains(Role.FORK.getRole());
                user.canCreate = roles.contains(Role.CREATE.getRole());
                user.excludeFromFederation = roles.contains(Role.NOT_FEDERATED.getRole());

                // repository memberships
                if (!user.canAdmin) {
                    // non-admin, read permissions
                    Set<String> repositories = new HashSet<String>(
                            Arrays.asList(config.getStringList(USER, username, REPOSITORY)));
                    for (String repository : repositories) {
                        user.addRepositoryPermission(repository);
                    }
                }

                // starred repositories
                Set<String> starred = new HashSet<String>(
                        Arrays.asList(config.getStringList(USER, username, STARRED)));
                for (String repository : starred) {
                    UserRepositoryPreferences prefs = user.getPreferences()
                            .getRepositoryPreferences(repository);
                    prefs.starred = true;
                }

                // update cache
                users.put(user.username, user);
                if (!StringUtils.isEmpty(user.cookie)) {
                    cookies.put(user.cookie, user);
                }
            }

            // load the teams
            Set<String> teamnames = config.getSubsections(TEAM);
            for (String teamname : teamnames) {
                TeamModel team = new TeamModel(teamname);
                Set<String> roles = new HashSet<String>(
                        Arrays.asList(config.getStringList(TEAM, teamname, ROLE)));
                team.canAdmin = roles.contains(Role.ADMIN.getRole());
                team.canFork = roles.contains(Role.FORK.getRole());
                team.canCreate = roles.contains(Role.CREATE.getRole());
                team.accountType = AccountType.fromString(config.getString(TEAM, teamname, ACCOUNTTYPE));

                if (!team.canAdmin) {
                    // non-admin team, read permissions
                    team.addRepositoryPermissions(
                            Arrays.asList(config.getStringList(TEAM, teamname, REPOSITORY)));
                }
                team.addUsers(Arrays.asList(config.getStringList(TEAM, teamname, USER)));
                team.addMailingLists(Arrays.asList(config.getStringList(TEAM, teamname, MAILINGLIST)));
                team.preReceiveScripts.addAll(Arrays.asList(config.getStringList(TEAM, teamname, PRERECEIVE)));
                team.postReceiveScripts
                        .addAll(Arrays.asList(config.getStringList(TEAM, teamname, POSTRECEIVE)));

                teams.put(team.name.toLowerCase(), team);

                // set the teams on the users
                for (String user : team.users) {
                    UserModel model = users.get(user);
                    if (model != null) {
                        model.teams.add(team);
                    }
                }
            }
        } catch (Exception e) {
            logger.error(MessageFormat.format("Failed to read {0}", realmFile), e);
        }
    }
}

From source file:com.gitblit.tickets.ITicketService.java

License:Apache License

/**
 * Returns the list of labels for the repository.
 *
 * @param repository//www  .  j  a v a  2  s  . c  o  m
 * @return the list of labels
 * @since 1.4.0
 */
public List<TicketLabel> getLabels(RepositoryModel repository) {
    String key = repository.name;
    if (labelsCache.containsKey(key)) {
        return labelsCache.get(key);
    }
    List<TicketLabel> list = new ArrayList<TicketLabel>();
    Repository db = repositoryManager.getRepository(repository.name);
    try {
        StoredConfig config = db.getConfig();
        Set<String> names = config.getSubsections(LABEL);
        for (String name : names) {
            TicketLabel label = new TicketLabel(name);
            label.color = config.getString(LABEL, name, COLOR);
            list.add(label);
        }
        labelsCache.put(key, Collections.unmodifiableList(list));
    } catch (Exception e) {
        log.error("invalid tickets settings for " + repository, e);
    } finally {
        db.close();
    }
    return list;
}

From source file:com.gitblit.tickets.ITicketService.java

License:Apache License

/**
 * Returns the list of milestones for the repository.
 *
 * @param repository/*from  w  w  w.  j a v  a2  s.co  m*/
 * @return the list of milestones
 * @since 1.4.0
 */
public List<TicketMilestone> getMilestones(RepositoryModel repository) {
    String key = repository.name;
    if (milestonesCache.containsKey(key)) {
        return milestonesCache.get(key);
    }
    List<TicketMilestone> list = new ArrayList<TicketMilestone>();
    Repository db = repositoryManager.getRepository(repository.name);
    try {
        StoredConfig config = db.getConfig();
        Set<String> names = config.getSubsections(MILESTONE);
        for (String name : names) {
            TicketMilestone milestone = new TicketMilestone(name);
            milestone.status = Status.fromObject(config.getString(MILESTONE, name, STATUS), milestone.status);
            milestone.color = config.getString(MILESTONE, name, COLOR);
            String due = config.getString(MILESTONE, name, DUE);
            if (!StringUtils.isEmpty(due)) {
                try {
                    milestone.due = new SimpleDateFormat(DUE_DATE_PATTERN).parse(due);
                } catch (ParseException e) {
                    log.error("failed to parse {} milestone {} due date \"{}\"",
                            new Object[] { repository, name, due });
                }
            }
            list.add(milestone);
        }
        milestonesCache.put(key, Collections.unmodifiableList(list));
    } catch (Exception e) {
        log.error("invalid tickets settings for " + repository, e);
    } finally {
        db.close();
    }
    return list;
}

From source file:com.gitblit.utils.JGitUtils.java

License:Apache License

/**
 * Automatic repair of (some) invalid refspecs.  These are the result of a
 * bug in JGit cloning where a double forward-slash was injected.  :(
 *
 * @param repository/*from w ww . ja v  a 2 s  . c  om*/
 * @return true, if the refspecs were repaired
 */
public static boolean repairFetchSpecs(Repository repository) {
    StoredConfig rc = repository.getConfig();

    // auto-repair broken fetch ref specs
    for (String name : rc.getSubsections("remote")) {
        int invalidSpecs = 0;
        int repairedSpecs = 0;
        List<String> specs = new ArrayList<String>();
        for (String spec : rc.getStringList("remote", name, "fetch")) {
            try {
                RefSpec rs = new RefSpec(spec);
                // valid spec
                specs.add(spec);
            } catch (IllegalArgumentException e) {
                // invalid spec
                invalidSpecs++;
                if (spec.contains("//")) {
                    // auto-repair this known spec bug
                    spec = spec.replace("//", "/");
                    specs.add(spec);
                    repairedSpecs++;
                }
            }
        }

        if (invalidSpecs == repairedSpecs && repairedSpecs > 0) {
            // the fetch specs were automatically repaired
            rc.setStringList("remote", name, "fetch", specs);
            try {
                rc.save();
                rc.load();
                LOGGER.debug("repaired {} invalid fetch refspecs for {}", repairedSpecs,
                        repository.getDirectory());
                return true;
            } catch (Exception e) {
                LOGGER.error(null, e);
            }
        } else if (invalidSpecs > 0) {
            LOGGER.error("mirror executor found {} invalid fetch refspecs for {}", invalidSpecs,
                    repository.getDirectory());
        }
    }
    return false;
}

From source file:com.hazelcast.simulator.utils.jars.GitSupport.java

License:Open Source License

private void syncRemoteRepositories(Git git) throws IOException {
    StoredConfig config = git.getRepository().getConfig();
    Set<GitRepository> customRepositoriesCopy = new HashSet<GitRepository>(customRepositories);

    Set<String> existingRemoteRepoNames = config.getSubsections(CONFIG_REMOTE);
    for (String remoteName : existingRemoteRepoNames) {
        String url = config.getString(CONFIG_REMOTE, remoteName, CONFIG_URL);
        boolean isConfigured = customRepositoriesCopy.remove(new GitRepository(remoteName, url));
        if (!isConfigured && isCustomRepository(remoteName)) {
            removeRepository(config, remoteName);
        }/*from   www  .java 2  s.  c  o  m*/
    }

    for (GitRepository repository : customRepositoriesCopy) {
        addRepository(config, repository);
    }
    config.save();
}

From source file:com.microsoft.tfs.client.common.ui.teambuild.egit.repositories.GitRepositoriesMap.java

License:Open Source License

private Map<String, String> getMappedBranches(final TfsGitRepositoryJson serverRepository,
        final Repository localRepository) {
    Map<String, String> mappedBranches = null;
    String upstreamURL = serverRepository.getRemoteUrl();
    try {/*  ww  w .  j a v a2s  .  c om*/
        upstreamURL = URIUtil.encodePath(serverRepository.getRemoteUrl());
    } catch (final URIException e) {
        log.error("Error encoding repository URL " + upstreamURL, e); //$NON-NLS-1$
    }

    final StoredConfig repositoryConfig = localRepository.getConfig();
    final Set<String> remotes = repositoryConfig.getSubsections(REMOTES_SECTION_NAME);

    for (final String remoteName : remotes) {
        final String remoteURL = repositoryConfig.getString(REMOTES_SECTION_NAME, remoteName, URL_VALUE_NAME);

        if (remoteURL != null && remoteURL.equalsIgnoreCase(upstreamURL)) {
            if (mappedBranches == null) {
                mappedBranches = new HashMap<String, String>();
            }

            final Set<String> branches = repositoryConfig.getSubsections(BRANCHES_SECTION_NAME);

            for (final String branch : branches) {
                final String fullBranchName = Constants.R_HEADS + branch;

                final String[] remoteNames = repositoryConfig.getStringList(BRANCHES_SECTION_NAME, branch,
                        REMOTE_VALUE_NAME);
                final String[] mappedBrancheNames = repositoryConfig.getStringList(BRANCHES_SECTION_NAME,
                        branch, MERGE_VALUE_NAME);

                for (int k = 0; k < remoteNames.length; k++) {
                    if (remoteNames[k].equals(remoteName)) {
                        final String remoteBranchName = mappedBrancheNames[k];

                        if (!mappedBranches.containsKey(remoteBranchName)) {
                            mappedBranches.put(remoteBranchName, fullBranchName);
                        }

                        break;
                    }
                }
            }

            break;
        }
    }

    return mappedBranches;
}

From source file:com.microsoft.tfs.client.eclipse.ui.egit.teamexplorer.TeamExplorerGitRepositoriesSection.java

License:Open Source License

private void loadRegisteredRepositories() {
    repositoryMap = new TreeMap<String, Repository>();
    final List<String> repositoryFolders = Activator.getDefault().getRepositoryUtil()
            .getConfiguredRepositories();

    for (final String repositoryFolder : repositoryFolders) {
        final File folder = new File(repositoryFolder);
        if (!folder.exists() || !folder.isDirectory()) {
            continue;
        }/*  w ww .j  a  va  2s .  c o  m*/

        if (!folder.getName().equals(Constants.DOT_GIT) || !FileKey.isGitRepository(folder, FS.DETECTED)) {
            continue;
        }

        final RepositoryBuilder rb = new RepositoryBuilder().setGitDir(folder).setMustExist(true);

        try {
            final Repository repo = rb.build();
            final StoredConfig repositoryConfig = repo.getConfig();
            final Set<String> remotes = repositoryConfig.getSubsections(REMOTES_SECTION_NAME);

            for (final String remoteName : remotes) {
                final String remoteURL = repositoryConfig.getString(REMOTES_SECTION_NAME, remoteName,
                        URL_VALUE_NAME);
                repositoryMap.put(remoteURL, repo);
            }
        } catch (final Exception e) {
            log.error("Error loading local Git repository " + repositoryFolder, e); //$NON-NLS-1$
            continue;
        }
    }
}

From source file:com.surevine.gateway.scm.git.jgit.JGitGitFacade.java

License:Open Source License

@Override
public Map<String, String> getRemotes(final LocalRepoBean repoBean) throws GitException {
    Map<String, String> remotes = new HashMap<String, String>();
    try {//  w w  w  .  j a v a  2  s .c o  m
        FileRepositoryBuilder builder = new FileRepositoryBuilder();
        Repository repository = builder.setGitDir(repoBean.getGitConfigDirectory().toFile()).findGitDir()
                .build();
        Git git = new org.eclipse.jgit.api.Git(repository);
        StoredConfig config = git.getRepository().getConfig();
        Set<String> remoteNames = config.getSubsections("remote");
        for (String remoteName : remoteNames) {
            remotes.put(remoteName, config.getString("remote", remoteName, "url"));
        }
    } catch (IOException e) {
        LOGGER.error(e);
        throw new GitException(e);
    }
    return remotes;
}

From source file:edu.wustl.lookingglass.community.CommunityRepository.java

License:Open Source License

private void addRemote(String newName, URL newURL) throws IOException, URISyntaxException {
    assert this.remoteName != null;
    assert this.remoteURL != null;

    boolean remoteExists = false;
    StoredConfig config = this.git.getRepository().getConfig();
    Set<String> remotes = config.getSubsections("remote");
    for (String oldName : remotes) {
        String oldURL = config.getString("remote", oldName, "url");
        if (newName.equals(oldName)) {
            remoteExists = true;//from   w  w w .j ava  2s . c  o  m
            if (newURL.toExternalForm().equals(oldURL)) {
                break;
            } else {
                Logger.warning("inconsistent remote url " + oldName + " : " + oldURL);
                config.setString("remote", oldName, "url", newURL.toExternalForm());
                config.save();
                break;
            }
        }
    }

    if (!remoteExists) {
        RemoteConfig remoteConfig = new RemoteConfig(config, this.remoteName);
        remoteConfig.addURI(new URIish(this.remoteURL));
        remoteConfig.addFetchRefSpec(new RefSpec("+refs/heads/*:refs/remotes/" + this.remoteName + "/*"));
        remoteConfig.update(config);
        config.save();
    }
}