From cca55e4722fa1ceba8a0933dda974162635f3955 Mon Sep 17 00:00:00 2001 From: John Crygier <john.crygier@aon.com> Date: Thu, 03 May 2012 12:48:16 -0400 Subject: [PATCH] Ability to get / set "custom" properties within a RepositoryModel. This makes getting specialized settings in hooks much easier. --- src/com/gitblit/models/RepositoryModel.java | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 43 insertions(+), 0 deletions(-) diff --git a/src/com/gitblit/models/RepositoryModel.java b/src/com/gitblit/models/RepositoryModel.java index 324f7d4..fd35f36 100644 --- a/src/com/gitblit/models/RepositoryModel.java +++ b/src/com/gitblit/models/RepositoryModel.java @@ -20,9 +20,16 @@ import java.util.Date; import java.util.List; +import org.eclipse.jgit.lib.Repository; +import org.eclipse.jgit.lib.StoredConfig; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.gitblit.Constants.AccessRestrictionType; import com.gitblit.Constants.FederationStrategy; +import com.gitblit.GitBlit; import com.gitblit.utils.ArrayUtils; +import com.gitblit.utils.JGitUtils; import com.gitblit.utils.StringUtils; /** @@ -35,6 +42,11 @@ public class RepositoryModel implements Serializable, Comparable<RepositoryModel> { private static final long serialVersionUID = 1L; + + public static String CUSTOM_DEFINED_PROP_SECTION = "gitblit"; + public static String CUSTOM_DEFINED_PROP_SUBSECTION = "customDefinedProperties"; + + private final Logger logger = LoggerFactory.getLogger(RepositoryModel.class); // field names are reflectively mapped in EditRepository page public String name; @@ -91,6 +103,37 @@ } return localBranches; } + + public String getCustomProperty(String propertyKey) { + try { + Repository r = GitBlit.self().getRepository(name); + StoredConfig config = JGitUtils.readConfig(r); + + return config.getString(CUSTOM_DEFINED_PROP_SECTION, CUSTOM_DEFINED_PROP_SUBSECTION, propertyKey); + } catch (Exception e) { + logger.error("Error getting Custom Property", e); + + return null; + } + } + + public String setCustomProperty(String propertyKey, String propertyValue) { + try { + Repository r = GitBlit.self().getRepository(name); + StoredConfig config = JGitUtils.readConfig(r); + + String oldValue = config.getString(CUSTOM_DEFINED_PROP_SECTION, CUSTOM_DEFINED_PROP_SUBSECTION, propertyKey); + + config.setString(CUSTOM_DEFINED_PROP_SECTION, CUSTOM_DEFINED_PROP_SUBSECTION, propertyKey, propertyValue); + config.save(); + + return oldValue; + } catch (Exception e) { + logger.error("Error getting Custom Property", e); + + return null; + } + } @Override public String toString() { -- Gitblit v1.9.1