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 fbe34ea523..779edfebb0 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java @@ -67,6 +67,7 @@ import java.net.URLEncoder; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; @@ -483,9 +484,20 @@ public class DefaultPluginManager implements PluginManager if (infoSet != null) { - for (PluginInformation available : infoSet) + Iterator pit = infoSet.iterator(); + + while (pit.hasNext()) { - preparePlugin(available); + PluginInformation available = pit.next(); + + if (isCorePluging(available)) + { + pit.remove(); + } + else + { + preparePlugin(available); + } } } } @@ -560,6 +572,34 @@ public class DefaultPluginManager implements PluginManager return center; } + /** + * Method description + * + * + * @param available + * + * @return + */ + private boolean isCorePluging(PluginInformation available) + { + boolean core = false; + + for (Plugin installedPlugin : installedPlugins.values()) + { + PluginInformation installed = installedPlugin.getInformation(); + + if (isSamePlugin(available, installed) + && (installed.getState() == PluginState.CORE)) + { + core = true; + + break; + } + } + + return core; + } + /** * Method description *