]> source.dussan.org Git - gitblit.git/commitdiff
Ability to get / set "custom" properties within a RepositoryModel. This makes gettin...
authorJohn Crygier <john.crygier@aon.com>
Thu, 3 May 2012 16:48:16 +0000 (11:48 -0500)
committerJohn Crygier <john.crygier@aon.com>
Thu, 3 May 2012 16:48:16 +0000 (11:48 -0500)
src/com/gitblit/models/RepositoryModel.java
tests/com/gitblit/tests/GitBlitSuite.java
tests/com/gitblit/tests/RepositoryModelTest.java [new file with mode: 0644]

index 324f7d470b8508ccb6ff1d72b12728e2649e4daa..fd35f36fa44de46a6fd9a7f3bc8340eba8982641 100644 (file)
@@ -20,9 +20,16 @@ import java.util.ArrayList;
 import java.util.Date;\r
 import java.util.List;\r
 \r
+import org.eclipse.jgit.lib.Repository;\r
+import org.eclipse.jgit.lib.StoredConfig;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
 import com.gitblit.Constants.AccessRestrictionType;\r
 import com.gitblit.Constants.FederationStrategy;\r
+import com.gitblit.GitBlit;\r
 import com.gitblit.utils.ArrayUtils;\r
+import com.gitblit.utils.JGitUtils;\r
 import com.gitblit.utils.StringUtils;\r
 \r
 /**\r
@@ -35,6 +42,11 @@ import com.gitblit.utils.StringUtils;
 public class RepositoryModel implements Serializable, Comparable<RepositoryModel> {\r
 \r
        private static final long serialVersionUID = 1L;\r
+       \r
+       public static String CUSTOM_DEFINED_PROP_SECTION = "gitblit";\r
+       public static String CUSTOM_DEFINED_PROP_SUBSECTION = "customDefinedProperties";\r
+       \r
+       private final Logger logger = LoggerFactory.getLogger(RepositoryModel.class);\r
 \r
        // field names are reflectively mapped in EditRepository page\r
        public String name;\r
@@ -91,6 +103,37 @@ public class RepositoryModel implements Serializable, Comparable<RepositoryModel
                }\r
                return localBranches;\r
        }\r
+       \r
+       public String getCustomProperty(String propertyKey) {\r
+               try {\r
+                       Repository r = GitBlit.self().getRepository(name);\r
+                       StoredConfig config = JGitUtils.readConfig(r);\r
+                       \r
+                       return config.getString(CUSTOM_DEFINED_PROP_SECTION, CUSTOM_DEFINED_PROP_SUBSECTION, propertyKey);\r
+               } catch (Exception e) {\r
+                       logger.error("Error getting Custom Property", e);\r
+                       \r
+                       return null;\r
+               }               \r
+       }\r
+       \r
+       public String setCustomProperty(String propertyKey, String propertyValue) {\r
+               try {\r
+                       Repository r = GitBlit.self().getRepository(name);\r
+                       StoredConfig config = JGitUtils.readConfig(r);\r
+                       \r
+                       String oldValue = config.getString(CUSTOM_DEFINED_PROP_SECTION, CUSTOM_DEFINED_PROP_SUBSECTION, propertyKey);\r
+                       \r
+                       config.setString(CUSTOM_DEFINED_PROP_SECTION, CUSTOM_DEFINED_PROP_SUBSECTION, propertyKey, propertyValue);\r
+                       config.save();\r
+                       \r
+                       return oldValue;\r
+               } catch (Exception e) {\r
+                       logger.error("Error getting Custom Property", e);\r
+                       \r
+                       return null;\r
+               }               \r
+       }\r
 \r
        @Override\r
        public String toString() {\r
index cab5b6391542d16d26bdbe4c553dfcf17a0f18c0..0cb63ec715b432eed879a5806a6ca1b77cadcae5 100644 (file)
@@ -53,7 +53,7 @@ import com.gitblit.utils.JGitUtils;
                MarkdownUtilsTest.class, JGitUtilsTest.class, SyndicationUtilsTest.class,\r
                DiffUtilsTest.class, MetricUtilsTest.class, TicgitUtilsTest.class,\r
                GitBlitTest.class, FederationTests.class, RpcTests.class, GitServletTest.class,\r
-               GroovyScriptTest.class, LuceneExecutorTest.class, IssuesTest.class })\r
+               GroovyScriptTest.class, LuceneExecutorTest.class, IssuesTest.class, RepositoryModelTest.class })\r
 public class GitBlitSuite {\r
 \r
        public static final File REPOSITORIES = new File("git");\r
diff --git a/tests/com/gitblit/tests/RepositoryModelTest.java b/tests/com/gitblit/tests/RepositoryModelTest.java
new file mode 100644 (file)
index 0000000..00bf0d0
--- /dev/null
@@ -0,0 +1,87 @@
+package com.gitblit.tests;
+
+import static org.junit.Assert.*;
+
+import org.eclipse.jgit.lib.Repository;
+import org.eclipse.jgit.lib.StoredConfig;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.gitblit.GitBlit;
+import com.gitblit.models.RepositoryModel;
+import com.gitblit.utils.JGitUtils;
+
+public class RepositoryModelTest {
+       
+       private static String oldSection;
+       private static String oldSubSection;
+       private static boolean wasStarted = false;
+       
+       @BeforeClass
+       public static void startGitBlit() throws Exception {
+               wasStarted = GitBlitSuite.startGitblit() == false;
+               
+               oldSection = RepositoryModel.CUSTOM_DEFINED_PROP_SECTION;
+               oldSubSection = RepositoryModel.CUSTOM_DEFINED_PROP_SUBSECTION;
+               
+               RepositoryModel.CUSTOM_DEFINED_PROP_SECTION = "RepositoryModelTest";
+               RepositoryModel.CUSTOM_DEFINED_PROP_SUBSECTION = "RepositoryModelTestSubSection";
+       }
+       
+       @AfterClass
+       public static void stopGitBlit() throws Exception {
+               if (wasStarted == false)
+                       GitBlitSuite.stopGitblit();
+               
+               RepositoryModel.CUSTOM_DEFINED_PROP_SECTION = oldSection;
+               RepositoryModel.CUSTOM_DEFINED_PROP_SUBSECTION = oldSubSection;
+       }
+       
+       @Before
+       public void initializeConfiguration() throws Exception{
+               Repository r = GitBlitSuite.getHelloworldRepository();
+               StoredConfig config = JGitUtils.readConfig(r);
+               
+               config.unsetSection(RepositoryModel.CUSTOM_DEFINED_PROP_SECTION, RepositoryModel.CUSTOM_DEFINED_PROP_SUBSECTION);
+               config.setString(RepositoryModel.CUSTOM_DEFINED_PROP_SECTION, RepositoryModel.CUSTOM_DEFINED_PROP_SUBSECTION, "commitMessageRegEx", "\\d");
+               config.setString(RepositoryModel.CUSTOM_DEFINED_PROP_SECTION, RepositoryModel.CUSTOM_DEFINED_PROP_SUBSECTION, "anotherProperty", "Hello");
+               
+               config.save();
+       }
+       
+       @After
+       public void teardownConfiguration() throws Exception {
+               Repository r = GitBlitSuite.getHelloworldRepository();
+               StoredConfig config = JGitUtils.readConfig(r);
+               
+               config.unsetSection(RepositoryModel.CUSTOM_DEFINED_PROP_SECTION, RepositoryModel.CUSTOM_DEFINED_PROP_SUBSECTION);
+               config.save();
+       }
+
+       @Test
+       public void testGetCustomProperty() throws Exception {
+               RepositoryModel model = GitBlit.self().getRepositoryModel(
+                               GitBlitSuite.getHelloworldRepository().getDirectory().getName());
+               
+               assertEquals("\\d", model.getCustomProperty("commitMessageRegEx"));
+               assertEquals("Hello", model.getCustomProperty("anotherProperty"));
+       }
+       
+       @Test
+       public void testSetCustomProperty() throws Exception {
+               RepositoryModel model = GitBlit.self().getRepositoryModel(
+                               GitBlitSuite.getHelloworldRepository().getDirectory().getName());
+               
+               assertEquals("\\d", model.getCustomProperty("commitMessageRegEx"));
+               assertEquals("Hello", model.getCustomProperty("anotherProperty"));
+               
+               assertEquals("Hello", model.setCustomProperty("anotherProperty", "GoodBye"));
+               
+               assertEquals("\\d", model.getCustomProperty("commitMessageRegEx"));
+               assertEquals("GoodBye", model.getCustomProperty("anotherProperty"));
+       }
+
+}