From 9ba9be513a347ea9893c51f2db6b13f6c7cb08dd Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Wed, 31 Oct 2012 16:30:05 -0400 Subject: [PATCH] Added frm to default pretty print extensions (issue 156) --- src/com/gitblit/GitBlit.java | 84 ++++++++++++++++++++++++++++++++++++------ 1 files changed, 72 insertions(+), 12 deletions(-) diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java index 402f600..e9b5e73 100644 --- a/src/com/gitblit/GitBlit.java +++ b/src/com/gitblit/GitBlit.java @@ -79,6 +79,7 @@ import com.gitblit.Constants.FederationRequest; import com.gitblit.Constants.FederationStrategy; import com.gitblit.Constants.FederationToken; +import com.gitblit.Constants.PermissionType; import com.gitblit.Constants.RegistrantType; import com.gitblit.models.FederationModel; import com.gitblit.models.FederationProposal; @@ -670,14 +671,35 @@ * @return a list of User-AccessPermission tuples */ public List<RegistrantAccessPermission> getUserAccessPermissions(RepositoryModel repository) { - List<RegistrantAccessPermission> permissions = new ArrayList<RegistrantAccessPermission>(); + Set<RegistrantAccessPermission> permissions = new LinkedHashSet<RegistrantAccessPermission>(); + if (!StringUtils.isEmpty(repository.owner)) { + UserModel owner = userService.getUserModel(repository.owner); + if (owner != null) { + permissions.add(new RegistrantAccessPermission(owner.username, AccessPermission.REWIND, PermissionType.OWNER, RegistrantType.USER, false)); + } + } + if (repository.isPersonalRepository()) { + UserModel owner = userService.getUserModel(repository.projectPath.substring(1)); + if (owner != null) { + permissions.add(new RegistrantAccessPermission(owner.username, AccessPermission.REWIND, PermissionType.OWNER, RegistrantType.USER, false)); + } + } for (String user : userService.getUsernamesForRepositoryRole(repository.name)) { UserModel model = userService.getUserModel(user); AccessPermission ap = model.getRepositoryPermission(repository); - boolean isExplicit = model.hasExplicitRepositoryPermission(repository.name); - permissions.add(new RegistrantAccessPermission(user, ap, isExplicit, RegistrantType.USER)); + PermissionType pType = PermissionType.REGEX; + boolean editable = false; + if (repository.isOwner(model.username)) { + pType = PermissionType.OWNER; + } else if (repository.isUsersPersonalRepository(model.username)) { + pType = PermissionType.OWNER; + } else if (model.hasExplicitRepositoryPermission(repository.name)) { + pType = PermissionType.EXPLICIT; + editable = true; + } + permissions.add(new RegistrantAccessPermission(user, ap, pType, RegistrantType.USER, editable)); } - return permissions; + return new ArrayList<RegistrantAccessPermission>(permissions); } /** @@ -690,8 +712,8 @@ public boolean setUserAccessPermissions(RepositoryModel repository, Collection<RegistrantAccessPermission> permissions) { List<UserModel> users = new ArrayList<UserModel>(); for (RegistrantAccessPermission up : permissions) { - if (up.isExplicit) { - // only set explicitly defined permissions + if (up.isEditable) { + // only set editable defined permissions UserModel user = userService.getUserModel(up.registrant); user.setRepositoryPermission(repository.name, up.permission); users.add(user); @@ -811,8 +833,13 @@ for (String team : userService.getTeamnamesForRepositoryRole(repository.name)) { TeamModel model = userService.getTeamModel(team); AccessPermission ap = model.getRepositoryPermission(repository); - boolean isExplicit = model.hasExplicitRepositoryPermission(repository.name); - permissions.add(new RegistrantAccessPermission(team, ap, isExplicit, RegistrantType.TEAM)); + PermissionType pType = PermissionType.REGEX; + boolean editable = false; + if (model.hasExplicitRepositoryPermission(repository.name)) { + pType = PermissionType.EXPLICIT; + editable = true; + } + permissions.add(new RegistrantAccessPermission(team, ap, pType, RegistrantType.TEAM, editable)); } return permissions; } @@ -827,7 +854,7 @@ public boolean setTeamAccessPermissions(RepositoryModel repository, Collection<RegistrantAccessPermission> permissions) { List<TeamModel> teams = new ArrayList<TeamModel>(); for (RegistrantAccessPermission tp : permissions) { - if (tp.isExplicit) { + if (tp.isEditable) { // only set explicitly defined access permissions TeamModel team = userService.getTeamModel(tp.registrant); team.setRepositoryPermission(repository.name, tp.permission); @@ -1018,6 +1045,16 @@ // update cache for (String repository : repositories) { getRepositoryModel(repository); + } + } + + // rebuild fork networks + for (RepositoryModel model : repositoryListCache.values()) { + if (!StringUtils.isEmpty(model.originRepository)) { + if (repositoryListCache.containsKey(model.originRepository)) { + RepositoryModel origin = repositoryListCache.get(model.originRepository); + origin.addFork(model.name); + } } } @@ -1418,7 +1455,7 @@ Constants.CONFIG_GITBLIT, null, "federationSets"))); model.isFederated = getConfig(config, "isFederated", false); model.gcThreshold = getConfig(config, "gcThreshold", settings.getString(Keys.git.defaultGarbageCollectionThreshold, "500KB")); - model.gcPeriod = getConfig(config, "gcPeriod", settings.getString(Keys.git.defaultGarbageCollectionPeriod, "7 days")); + model.gcPeriod = getConfig(config, "gcPeriod", settings.getInteger(Keys.git.defaultGarbageCollectionPeriod, 7)); try { model.lastGC = new SimpleDateFormat(Constants.ISO8601).parse(getConfig(config, "lastGC", "1970-01-01'T'00:00:00Z")); } catch (Exception e) { @@ -1703,6 +1740,27 @@ private boolean getConfig(StoredConfig config, String field, boolean defaultValue) { return config.getBoolean(Constants.CONFIG_GITBLIT, field, defaultValue); } + + /** + * Returns the gitblit string value for the specified key. If key is not + * set, returns defaultValue. + * + * @param config + * @param field + * @param defaultValue + * @return field value or defaultValue + */ + private int getConfig(StoredConfig config, String field, int defaultValue) { + String value = config.getString(Constants.CONFIG_GITBLIT, null, field); + if (StringUtils.isEmpty(value)) { + return defaultValue; + } + try { + return Integer.parseInt(value); + } catch (Exception e) { + } + return defaultValue; + } /** * Creates/updates the repository model keyed by reopsitoryName. Saves all @@ -1869,8 +1927,10 @@ repository.federationStrategy.name()); config.setBoolean(Constants.CONFIG_GITBLIT, null, "isFederated", repository.isFederated); config.setString(Constants.CONFIG_GITBLIT, null, "gcThreshold", repository.gcThreshold); - config.setString(Constants.CONFIG_GITBLIT, null, "gcPeriod", repository.gcPeriod); - config.setString(Constants.CONFIG_GITBLIT, null, "lastGC", new SimpleDateFormat(Constants.ISO8601).format(repository.lastGC)); + config.setInt(Constants.CONFIG_GITBLIT, null, "gcPeriod", repository.gcPeriod); + if (repository.lastGC != null) { + config.setString(Constants.CONFIG_GITBLIT, null, "lastGC", new SimpleDateFormat(Constants.ISO8601).format(repository.lastGC)); + } updateList(config, "federationSets", repository.federationSets); updateList(config, "preReceiveScript", repository.preReceiveScripts); -- Gitblit v1.9.1