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