From e5d0bacbf746e09a9194822b231cb27090f58973 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 10 Apr 2014 19:00:52 -0400
Subject: [PATCH] Implement simple JSON-based plugin registry and install command

---
 src/main/java/com/gitblit/manager/IPluginManager.java |   48 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 46 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/gitblit/manager/IPluginManager.java b/src/main/java/com/gitblit/manager/IPluginManager.java
index 11b81ea..1f7f85e 100644
--- a/src/main/java/com/gitblit/manager/IPluginManager.java
+++ b/src/main/java/com/gitblit/manager/IPluginManager.java
@@ -15,8 +15,13 @@
  */
 package com.gitblit.manager;
 
+import java.util.List;
+
 import ro.fortsoft.pf4j.PluginManager;
 import ro.fortsoft.pf4j.PluginWrapper;
+
+import com.gitblit.models.PluginRegistry.PluginRegistration;
+import com.gitblit.models.PluginRegistry.PluginRelease;
 
 public interface IPluginManager extends IManager, PluginManager {
 
@@ -27,12 +32,51 @@
      * @return PluginWrapper that loaded the given class
      */
     PluginWrapper whichPlugin(Class<?> clazz);
-    
+
     /**
      * Delete the plugin represented by {@link PluginWrapper}.
-     * 
+     *
      * @param wrapper
      * @return true if successful
      */
     boolean deletePlugin(PluginWrapper wrapper);
+
+    /**
+     * Refresh the plugin registry.
+     */
+    boolean refreshRegistry();
+
+    /**
+     * Install the plugin from the specified url.
+     */
+    boolean installPlugin(String url);
+
+    /**
+     * Install the plugin.
+     */
+    boolean installPlugin(PluginRelease pr);
+
+    /**
+     * The list of all registered plugins.
+     *
+     * @return a list of registered plugins
+     */
+    List<PluginRegistration> getRegisteredPlugins();
+
+    /**
+     * Lookup a plugin registration from the plugin registries.
+     *
+     * @param idOrName
+     * @return a plugin registration or null
+     */
+    PluginRegistration lookupPlugin(String idOrName);
+
+    /**
+     * Lookup a plugin release.
+     *
+     * @param idOrName
+     * @param version (use null for the current version)
+     * @return the identified plugin version or null
+     */
+    PluginRelease lookupRelease(String idOrName, String version);
 }

--
Gitblit v1.9.1