From 09fb26f63d4788de9e5901f0ae67fec293ba773e Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sat, 18 Dec 2010 14:18:14 +0100 Subject: [PATCH] make plugin repository url configurable --- .../java/sonia/scm/plugin/PluginManager.java | 6 ++++++ .../rest/resources/ConfigurationResource.java | 18 +++++++++++++++--- .../sonia/scm/config/ScmConfiguration.java | 1 + .../sonia/scm/plugin/DefaultPluginManager.java | 15 ++++++++++----- .../main/webapp/resources/js/sonia.config.js | 18 ++++++++++++------ 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java b/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java index 4b9f8c5973..3c2156e623 100644 --- a/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java +++ b/scm-core/src/main/java/sonia/scm/plugin/PluginManager.java @@ -44,6 +44,12 @@ import java.util.Collection; public interface PluginManager { + /** + * Method description + * + */ + public void clearCache(); + /** * Method description * diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ConfigurationResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ConfigurationResource.java index 08faeab28a..7846bc21fa 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ConfigurationResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/ConfigurationResource.java @@ -41,6 +41,7 @@ import com.google.inject.Singleton; import sonia.scm.SCMContext; import sonia.scm.config.ScmConfiguration; +import sonia.scm.plugin.PluginManager; import sonia.scm.util.IOUtil; import sonia.scm.util.SecurityUtil; import sonia.scm.web.security.WebSecurityContext; @@ -76,14 +77,16 @@ public class ConfigurationResource * * @param configuration * @param securityContextProvider + * @param pluginManager */ @Inject public ConfigurationResource( - ScmConfiguration configuration, - Provider securityContextProvider) + Provider securityContextProvider, + ScmConfiguration configuration, PluginManager pluginManager) { - this.configuration = configuration; this.securityContextProvider = securityContextProvider; + this.configuration = configuration; + this.pluginManager = pluginManager; } //~--- get methods ---------------------------------------------------------- @@ -118,6 +121,12 @@ public class ConfigurationResource ScmConfiguration newConfig) { SecurityUtil.assertIsAdmin(securityContextProvider); + + if (!configuration.getPluginUrl().equals(newConfig.getPluginUrl())) + { + pluginManager.clearCache(); + } + configuration.load(newConfig); synchronized (ScmConfiguration.class) @@ -141,6 +150,9 @@ public class ConfigurationResource /** Field description */ public ScmConfiguration configuration; + /** Field description */ + private PluginManager pluginManager; + /** Field description */ private Provider securityContextProvider; } diff --git a/scm-webapp/src/main/java/sonia/scm/config/ScmConfiguration.java b/scm-webapp/src/main/java/sonia/scm/config/ScmConfiguration.java index 8f66c6cd69..90ba9fc552 100644 --- a/scm-webapp/src/main/java/sonia/scm/config/ScmConfiguration.java +++ b/scm-webapp/src/main/java/sonia/scm/config/ScmConfiguration.java @@ -75,6 +75,7 @@ public class ScmConfiguration public void load(ScmConfiguration other) { this.servername = other.servername; + this.pluginUrl = other.pluginUrl; } //~--- get methods ---------------------------------------------------------- diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java index 263ae8b36e..315759b47c 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java @@ -132,6 +132,16 @@ public class DefaultPluginManager implements PluginManager //~--- methods -------------------------------------------------------------- + /** + * Method description + * + */ + @Override + public void clearCache() + { + cache.clear(); + } + /** * Method description * @@ -247,11 +257,6 @@ public class DefaultPluginManager implements PluginManager infoSet.addAll(installedPlugins.values()); infoSet.addAll(getPluginCenter().getPlugins()); - for ( PluginInformation pi : infoSet ) - { - System.out.println( pi.getName() + ": " + pi.hashCode() ); - } - return infoSet; } diff --git a/scm-webapp/src/main/webapp/resources/js/sonia.config.js b/scm-webapp/src/main/webapp/resources/js/sonia.config.js index 06a73f3d3c..3295a85bd3 100644 --- a/scm-webapp/src/main/webapp/resources/js/sonia.config.js +++ b/scm-webapp/src/main/webapp/resources/js/sonia.config.js @@ -92,12 +92,18 @@ Sonia.config.ScmConfigPanel = Ext.extend(Sonia.config.ConfigPanel,{ var config = { panels: [{ xtype: 'configForm', - title : 'General Settings', - items : [{ - xtype : 'textfield', - fieldLabel : 'Servername', - name : 'servername', - allowBlank : false + title: 'General Settings', + items: [{ + xtype: 'textfield', + fieldLabel: 'Servername', + name: 'servername', + allowBlank: false + },{ + xtype: 'textfield', + fieldLabel: 'Plugin repository', + name: 'plugin-url', + vtype: 'url', + allowBlank: false }], onSubmit: function(values){